【问题标题】:MenuItem background doesnt change when its highlighted突出显示时,MenuItem 背景不会改变
【发布时间】:2015-09-14 18:11:51
【问题描述】:

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

         <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>

【问题讨论】:

    标签: wpf triggers menuitem


    【解决方案1】:

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

    要解决这个问题,您可以在 window.resources 中放置一个样式,并引用该样式。您还想使用“IsMouseOver”作为触发器。

    <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>
    

    【讨论】:

    • 这适用于前景,我可以通过我的代码进行更改,但我想更改背景颜色。我在google上找到了一些答案:“属性触发器不起作用的原因是,当鼠标悬停在MenuItem上时,MenuItem的默认控件模板在MenuItem上显示了一个装饰器,覆盖了MenuItem的背景。解决方法就是自己实现一个MenuItem的自定义控件模板。”
    • 是的,对于前台,您可以访问依赖属性,但对于后台,您必须编辑模板。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 2013-01-09
    相关资源
    最近更新 更多