我只是闲逛在WPF了一下,想在我的窗口中的所有元素共享相同的幅度。 我发现,能够有余量的所有控件自FrameworkElement派生,所以我尝试了以下内容:
<Window.Resources>
<Style TargetType="{x:Type FrameworkElement}">
<Setter Property="Margin" Value="10" />
</Style>
</Window.Resources>
而且,这是行不通的。 我能将这所有的按钮,而不是从按钮获得的所有元素。 我缺少的东西,或者这是根本不可能的?
我是唯一一个感觉像使用CSS WPF将是一个好主意吗?
不幸的是,你不能应用样式基本FrameworkElement的类型; 而WPF将让你写的风格,它不会将它应用于从它派生的控件。 看来,这也适用于FrameworkElement的,如ButtonBase,按钮/切换按钮/的RepeatButton的超类型的子类型。
您仍然可以使用继承,但是你必须使用显式BasedOn
语法将它应用到你想让它适用于控制类型。
<Window.Resources>
<Style TargetType="{x:Type FrameworkElement}">
<Setter Property="Margin" Value="10" />
</Style>
<Style TargetType="{x:Type Label}" BasedOn="{StaticResource {x:Type FrameworkElement}}" />
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type FrameworkElement}}" />
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type FrameworkElement}}" />
</Window.Resources>
问题是,对于一个风格搜索时,WPF不会通过从当前的派生的所有类搜索。 然而,你可以给风格钥匙,并将其应用至您希望有一个共同财产的所有元素。 如果不能被应用到你的造型元素的风格指定的属性,它被忽略。