0

我想在整个视图中的所有控件中设置一致的边距。我目前使用 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}">

有没有办法为控件设置一个默认的布局样式来避免上面显示的重复代码?

4

2 回答 2

1

您可以创建自己的样式,TargetType该样式将分配给您在 中指定的所有类型的对象TargetType。但在这种情况下,您创建的样式将仅适用于指定类型的对象,而不适用于派生类型。

例如,您可以为所有按钮创建样式,如下所示:

<Style TargetType="{x:Type Button}">
    <Setter Property="Margin" Value="0,10,0,0" />
</Style>

我认为没有从基类应用样式是有道理的,因为我想说“我的所有按钮看起来像......”,但我不想说“一切看起来像......”。

于 2013-01-24T22:36:21.400 回答
0

您可以为 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>
于 2013-01-24T22:39:57.970 回答