MenuItem背景在突出显示时不会改变

时间:2015-09-14 18:11:51

标签: wpf triggers menuitem

为什么它不想改变它的颜色? 它始终以默认颜色突出显示。

         <Menu>
            <Menu.Resources>
                <Style TargetType="{x:Type MenuItem}">
                    <Style.Triggers>
                        <Trigger Property="IsHighlighted" Value="True">
                            <Setter Property="Background" Value="Black"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Menu.Resources>
            <MenuItem Header="Menu" Margin="6" Foreground="White" FontSize="14" FontFamily="Times New Roman">
                <MenuItem Header="Add Invoice" Command="{Binding AddInvoice}"/>
                <MenuItem Header="Invoices List" Command="{Binding AddInvoiceList}" FontFamily="Tahoma" />
            </MenuItem>
            <Menu.Background>
                <SolidColorBrush />
            </Menu.Background>
        </Menu>

1 个答案:

答案 0 :(得分:1)

问题是您的menuitem适用于所有菜单项,包括主菜单和子菜单。这是因为它们都是菜单项。

要解决此问题,您可以在window.resources中添加样式,并引用该样式。你也想使用&#34; IsMouseOver&#34;触发器。

in

<Window.Resources>
        <Style x:Key="MenuItemWithHighlighting"  TargetType="{x:Type MenuItem}">
            <Style.Triggers>
                <Trigger Property="IsMouseOver"
                         Value="True">
                    <Setter Property="Foreground"
                            Value="Blue" />
                </Trigger>
            </Style.Triggers>
        </Style>
</Window.Resources>

然后您的菜单项可以引用该资源。

            <MenuItem Header="Menu" Margin="6" Foreground="White" FontSize="14" FontFamily="Times New Roman">
                <MenuItem Header="Add Invoice" Command="{Binding AddInvoice}"
Style={StaticResource MenuItemWithHighlighting}" />
                <MenuItem Header="Invoices List" Command="{Binding AddInvoiceList}" FontFamily="Tahoma" Style={StaticResource MenuItemWithHighlighting}" />
            </MenuItem>