今天在編寫樣式時遇到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>