【问题标题】:Trigger not working on MenuItem Style in Resource Dictionary触发器不适用于资源字典中的 MenuItem 样式
【发布时间】:2015-05-05 22:04:29
【问题描述】:

我在资源字典中有以下内容。风格有效,但触发器无效。请帮忙。

 <Style x:Key="MenuItemStyle" TargetType="{x:Type MenuItem}">
    <Setter Property="Foreground" Value="{StaticResource ForegroundBrush}"/>
    <Setter Property="Background" Value="#FF181818" />
    <Setter Property="FontSize" Value="13.333" />
    <Setter Property="FontFamily" Value="Segoe UI" />
    <Setter Property="BorderThickness" Value="0" />

    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background" Value="{StaticResource HighlightedBackgroundBrush}" />

         </Trigger>
    </Style.Triggers>


</Style>

【问题讨论】:

    标签: wpf triggers styles


    【解决方案1】:

    这是因为 MenuItem 的背景是由父模板触发器设置的,并且根据 Dependency Property Value Precedence 的规则,模板中的值将生效。

    Related question on Stack Overflow:你必须覆盖MenuItem的控制模板。

    【讨论】:

    • 我是 WPF 新手。你能举个例子说明如何做到这一点吗?
    • Here 是一个描述。基本上你必须在你的样式中添加一个&lt;Setter Property="Template"&gt;&lt;Setter.Value&gt;&lt;ControlTemplate TargetType="{x:Type MenuItem}"&gt;&lt;!-- Here comes the template --&gt;&lt;/ControlTemplate&gt;&lt;/Setter.Value&gt;&lt;/Setter&gt;。我会使用 MenuItem 的默认 ControlTemplate 作为基础。 Default Template related question我在 MSDN 上找不到模板..
    • --- 这使菜单消失。
    猜你喜欢
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多