我喜欢@CodeNaked的this solution,但由于某种原因,我很难将其应用于Menu
分隔符。它不适用于我在Style
中定义的Resources
。
这是我的代码:
<Menu>
<Menu.Resources>
<Style TargetType="MenuItem">
<Setter Property="Padding" Value="0,0,0,0"/>
</Style>
<Style TargetType="Separator" BasedOn="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" />
</Menu.Resources>
<MenuItem Header="Foo"></MenuItem>
<Separator/>
<MenuItem Header="Bar"></MenuItem>
</Menu>
如果我在Style
上显式设置Separator
,则可以使用。
<Separator Style="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}"/>
您知道为什么在第一种情况下它不起作用吗?
答案 0 :(得分:2)
替换您的样式:
<Style x:Key="{x:Static MenuItem.SeparatorStyleKey}" TargetType="Separator" BasedOn="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" />
有关Separator Class的信息,请参见MSDN文档:
使用分隔符创建菜单时,控件会自动 应用由MenuItem.SeparatorStyleKey标识的Style 属性。样式放置在资源词典中, 通过其键进行搜索。更改内部分隔符的样式 菜单,您必须使用MenuItem.SeparatorStyleKey属性创建 您的新样式。
因此,分隔符的资源样式将从控件中覆盖,并且如果直接将其放置到控件中,则不会。