此问题可能是重复的,但我无法在SO上找到它。将WPF样式应用于多个控件
如果我有一个容器Window
,StackPanel
,Grid
,等有没有什么办法可以应用到Style
某种类型的所有控件,其所包含的呢?
我可以申请属性更改,使用Container.Resources
并设置为TargetType
个人的变化,但是当我试图设定目标的Style
,我得到一个错误,告诉我,我不能设置Style
。
有没有办法在XAML中做到这一点?
此问题可能是重复的,但我无法在SO上找到它。将WPF样式应用于多个控件
如果我有一个容器Window
,StackPanel
,Grid
,等有没有什么办法可以应用到Style
某种类型的所有控件,其所包含的呢?
我可以申请属性更改,使用Container.Resources
并设置为TargetType
个人的变化,但是当我试图设定目标的Style
,我得到一个错误,告诉我,我不能设置Style
。
有没有办法在XAML中做到这一点?
排序,取决于您要设置的内容。如果属性是公共基类的属性,那么可以。因为您可以继承样式,所以WPF中的选项比Silverlight更多。例如...
<Window.Resources>
<Style x:Key="CommonStyle" TargetType="FrameworkElement">
<Setter Property="Margin" Value="2" />
</Style>
<Style TargetType="StackPanel" BasedOn="{StaticResource CommonStyle}">
</Style>
<Style TargetType="Grid" BasedOn="{StaticResource CommonStyle}">
</Style>
<Style TargetType="Button" BasedOn="{StaticResource CommonStyle}">
<Setter Property="Background" Value="LimeGreen" />
</Style>
</Window.Resources>
常见样式CommonStyle
将被3种隐式样式继承。但是您只能指定所有FrameworkElement类共有的属性。您无法在CommonStyle中设置Background,因为FrameworkElement不提供Background属性。因此,即使Grid和StackPanel具有Background(继承自Panel),它与Button所具有的Background属性(从Control继承而来)并不相同。
希望这可以帮助您顺利完成任务。
太棒了,这就是我需要的,谢谢。 – ocodo 2011-01-12 23:49:38