在选择任何MenuItem(单击)之前,下面的工作正常 - 鼠标悬停时亮绿色(IsHighlighted = true)。
选择(单击)任何MenuItem后,IsHighlighted的背景将恢复为默认灰色
如何在选择任何MenuItem后设置IsHighlighted的背景?
而是如何让IsHighlighted颜色粘住?
<Style TargetType="{x:Type MenuItem}">
<Style.Triggers>
<Trigger Property="IsHighlighted" Value="true">
<Setter Property="Background" Value="Green"/>
</Trigger>
</Style.Triggers>
</Style>
请注意,如果我点击菜单上没有的其他项目,请返回菜单IsHighlighted为绿色。
与IsMouseOver相同的问题。选择任何MenuItem后,它会丢失颜色(返回默认灰色)。
<Window.Resources>
<Style TargetType="{x:Type MenuItem}">
<Style.Triggers>
<Trigger Property="IsHighlighted" Value="true">
<Setter Property="Background" Value="LightGreen"/>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Menu Grid.Row="0">
<MenuItem Header="View">
<CheckBox Name="DocViewNative" VerticalAlignment="Center">ViewNative</CheckBox>
<CheckBox Name="DocViewIRPO" VerticalAlignment="Center">ViewIPRO</CheckBox>
</MenuItem>
<MenuItem Header="Admin">
<MenuItem Header="Snapshot Admin" />
<MenuItem Header="Tags Admin" />
<MenuItem Header="Thesaurus Admin" />
</MenuItem>
<MenuItem Header="Reload"/>
</Menu>
<TextBlock Grid.Row="1" Text="Menu IsHighlighted background changes after click any MenuItems" />
<Button Grid.Row="2" Content="Click me to get green back" HorizontalAlignment="Left"/>
</Grid>
答案 0 :(得分:0)
我想我现在明白你的问题。如果我错了,请纠正我,但你现在得到了这个:
你想要这个:
但是你得到了这个:
如果检查MenuItem
的{{1}},问题实际上在于几个触发器,它们将Rectangle的Fill(绑定到Background)更改为静态画笔。因此,在setter中设置的背景并不重要;它会被忽略。您可以通过重新模板化MenuItem并删除注释行来解决此问题:
ControlTemplate