在WPF中为样式化菜单设置MenuItem样式的最佳方法是什么?

时间:2010-11-10 15:24:35

标签: c# wpf styles

我刚开始使用WPF,并希望获得以下建议:

我有一个看起来像这样的菜单:

<Menu Name="MenuBar"
    Grid.Row="0"
    HorizontalAlignment="Right"
    Style="{DynamicResource MenuBarStyle}">
    <MenuItem Header="Settings" />
    <MenuItem Header="Help" />
</Menu>

在我的Window.Resources中我定义了这种风格:

<Style x:Key="MenuBarStyle" TargetType="{x:Type Menu}">
    <Setter Property="Background" Value="{x:Null}" />
    <Setter Property="Foreground" Value="White" />
    <Setter Property="FontSize" Value="10" />
</Style>

这符合我的预期和意图。但是,我还想在我的菜单中更改每个MenuItem的Padding属性。做这个的最好方式是什么?我最初的想法是创建一个单独的样式并将其应用于每个MenuItem,但是如果我的MenuItems是动态添加的话它会如何工作(它们不是,但只是出于好奇)?有没有办法可以从我的“MenuStyle”样式中定位一个子MenuItem?

谢谢,

史蒂夫

1 个答案:

答案 0 :(得分:1)

您可以使用“隐式”样式(没有x:Key属性的样式)并将其定位到MenuItem类型。然后默认情况下为所有MenuItem选择此样式。如果您只希望此菜单使用此菜单,请将此样式放在Menu.Resources中,否则在Menu.Resources中使用您的菜单样式。