2016-04-26 32 views
1

我正在使用MetroDark主题皮肤我的WPF应用程序,很遗憾没有MenuItem。所以我想改变前景和背景的菜单项的四种状态:WPF - 设置Sub-MenuItem风格与触发器

  • 正常
  • 徘徊
  • 按下
  • 禁用

到目前为止,我有这样的代码,什么它只是在鼠标悬停菜单项时设置Foreground和Background:

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

结果是: 但是,前景的设置适用于背景仅适用于MenuItem的直接子项,而不适用于其子菜单项。

enter image description here

enter image description here

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

非常感谢!

回答

0

您将需要修改模板。在Blend中很容易做到。我会建议在Blend中创建一个SimpleMenuItem并编辑该模板的副本。他们更容易与默认模板imo一起工作。