【问题标题】:WPF - Set Sub-MenuItem Style With TriggerWPF - 使用触发器设置子菜单项样式
【发布时间】:2016-04-26 11:14:17
【问题描述】:

我正在使用 MetroDark 主题为我的 WPF 应用程序设置皮肤,但遗憾的是它没有 MenuItem。所以我想改变菜单项的四种状态的前景和背景:

  • 正常
  • 悬停
  • 按下
  • 已禁用

到目前为止,我有这样的代码,它所做的只是在鼠标悬停菜单项时设置前景和背景:

<Menu Background="#FF181818" Foreground="#FFABABAB" >
    <Menu.Resources>
        <Style x:Key="{x:Type MenuItem}" >
            <Style.Setters>
                <Setter Property="MenuItem.Background" Value="#FF181818" />
                <Setter Property="MenuItem.Foreground" Value="#FFABABAB" />
            </Style.Setters>
            <Style.Triggers>
                <Trigger Property="MenuItem.IsMouseOver" Value="True">
                    <Setter Property="MenuItem.Background" Value="Green" />
                    <Setter Property="MenuItem.Foreground" Value="Red" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Menu.Resources>
    <MenuItem Header="File">
        <MenuItem Header="New" Command="ApplicationCommands.New"></MenuItem>
        <MenuItem Header="Open" Command="ApplicationCommands.Open"></MenuItem>
        <MenuItem Header="Save" Command="ApplicationCommands.Save"></MenuItem>
        <MenuItem Header="Save As" Command="ApplicationCommands.SaveAs"></MenuItem>
        <Separator Background="#FF181818" Foreground="#FFABABAB"></Separator>
        <MenuItem Header="Delete" Command="ApplicationCommands.Delete"></MenuItem>
        <MenuItem Header="Quit" Click="Quit_MenuItem_Click"></MenuItem>
    </MenuItem>
    <MenuItem Header="Format" Click="Format_MenuItem_Click" ></MenuItem>
    <MenuItem Header="About" ></MenuItem>
</Menu>

结果是: 但是,Foreground 的设置有效,Background 的设置仅适用于 Menu 的直接子级 MenuItem,而不适用于其子菜单项。

我注意到了这个 Styled MenuItem on WPF ,这可能是相关的。但我的问题是我可以在没有 ControlTemplate 的情况下解决这个问题吗?我正在寻找一种可以应用于所有其他状态的解决方案,例如 IsDisabled 和 IsPressed。

非常感谢!

【问题讨论】:

    标签: wpf wpf-style


    【解决方案1】:

    您需要修改模板。在 Blend 中很容易做到。我建议在 Blend 中创建一个 SimpleMenuItem 并编辑该模板的副本。与 imo 的默认模板相比,它们更易于使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-22
      • 2012-03-14
      • 2011-03-24
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多