我想在整个视图中的所有控件中设置一致的边距。 我目前使用 XAML:
<Window.Resources>
<Thickness x:Key="ConsistentMargins">0,10,0,0</Thickness>
</Window.Resources>
<!-- ... -->
<!-- ... -->
<!-- ... -->
<MyControl1 Margin="{StaticResource ConsistentMargins}">
<MyControl2 Margin="{StaticResource ConsistentMargins}">
<MyControl3 Margin="{StaticResource ConsistentMargins}">
有没有办法为控件设置默认布局样式以避免上面显示的上述重复代码?
您可以使用
TargetType
创建自己的样式,此样式将分配给您在TargetType
中指定的所有类型对象。但在这种情况下,您创建的样式将仅应用于指定的对象类型,而不应用于派生类型。
例如,您可以像这样为所有按钮创建样式:
<Style TargetType="{x:Type Button}">
<Setter Property="Margin" Value="0,10,0,0" />
</Style>
我认为从基类不应用样式是有道理的,因为我想说"我的所有按钮看起来像......",但我不想说"一切看起来像......"。
您可以创建一个基本默认样式,也许是为 FrameworkElement,并让其他元素类型的默认样式扩展基本样式:
<Window.Resources>
<Style TargetType="FrameworkElement">
<Setter Property="Margin" Value="0,10,0,0"/>
</Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource {x:Type FrameworkElement}}"/>
<Style TargetType="TextBox" BasedOn="{StaticResource {x:Type FrameworkElement}}"/>
<Style TargetType="Label" BasedOn="{StaticResource {x:Type FrameworkElement}}"/>
...
</Window.Resources>