我声明了一种我想应用于项目中所有按钮的样式,该样式位于 ResourceDictionary 中:
<Style TargetType="StackPanel">
<Setter Property="Orientation" Value="Horizontal" />
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
现在,在某些窗口中,我想继承这种风格,但添加一个值:
<Style TargetType="StackPanel">
<Setter Property="Margin" Value="5"/>
</Style>
问题是它没有从全局样式继承,为了继承我必须为全局样式分配一个键:
<Style TargetType="StackPanel" x:Key="StackPanelStyle" />
然后在窗口的 XAML 中继承(或/和覆盖 - 可选)它:
<Style TargetType="StackPanel" BasedOn="StackPanelStyle" />
问题是,如果您分配一个键,它不是全局的,您必须在每个窗口/范围内调用它。
我的问题的解决方案应该是两者之一(我还有什么遗漏的吗?):
- 具有带键的全局样式,该样式会自动应用于整个应用程序中的所有目标控件。
- 一种在没有和覆盖它的情况下引用 ResourceDictionary 级别的未命名样式的方法。
我考虑过在命名样式(在 ResourceDictionary 中)附近重新声明实际有效的样式:
<!--In the ResourceDictionary-->
<Style x:Key="StackPanelStyle" TargetType="StackPanel">
<Setter Property="Orientation" Value="Horizontal" />
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
<!--In the app.xaml-->
<Style TargetType="StackPanel" BasedOn="{StaticResource StackPanelStyle}"/>
<!--In the window/page scope-->
<Style TargetType="StackPanel" BasedOn="{StaticResource StackPanelStyle}"/
但我正在寻找比愚蠢地重新声明所有样式更好的东西。