MenuItems突出显示

时间:2015-03-10 00:20:05

标签: .net wpf background menuitem

在选择任何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>

1 个答案:

答案 0 :(得分:0)

我想我现在明白你的问题。如果我错了,请纠正我,但你现在得到了这个:

你想要这个:

但是你得到了这个:

如果检查MenuItem的{​​{1}},问题实际上在于几个触发器,它们将Rectangle的Fill(绑定到Background)更改为静态画笔。因此,在setter中设置的背景并不重要;它会被忽略。您可以通过重新模板化MenuItem并删除注释行来解决此问题:

ControlTemplate