今天在编写样式时遇到Separator的样式全局设置后无效问题,经过漫长的搜索,终于找到解决方案,就是重写{x:Static MenuItem.SeparatorStyleKey}样式。
原因是Menu 元素内的 Separator 控件外观与 Menu 外的 Separator 控件不一样。当创建带 Separator 的 Menu 时,该控件会自动应用由 SeparatorStyleKey 属性标识的 Style。
<Style x:Key="{x:Static MenuItem.SeparatorStyleKey}" TargetType="{x:Type Separator}">
<Setter Property="Foreground" Value="Red"></Setter>
<Setter Property="Background" Value="Blue"></Setter>
<Setter Property="Width" Value="45"></Setter>
<Setter Property="HorizontalAlignment" Value="Center"></Setter>
<Setter Property="VerticalAlignment" Value="Center"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Separator}">
<Grid>
<Rectangle Height="1" Stroke="{TemplateBinding Foreground}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>