不使用键将样式应用于多个控件

时间:2012-08-21 18:10:27

标签: wpf xaml styles

在.NET WPF中,我有以下XAML代码:

<StackPanel>
    <StackPanel.Resources>
        <Style TargetType="FrameworkElement">
            <Setter Property="Margin" Value="5" />
        </Style>
    </StackPanel.Resources>

    <CheckBox>Check 1</CheckBox>
    <TextBox>Some text...</TextBox>
</StackPanel>

控件 没有应用任何边距。

是否可以将样式应用于多个控件(不同类型)而不使用键在每个控件上明确设置样式?

2 个答案:

答案 0 :(得分:1)

样式继承,您可以使用BasedOn将子类的样式基于该样式。

在这种情况下,另一种方法应该是ItemsControl使用ItemContainerStyle设置为此样式。

this answer中有两种方法的例子。

答案 1 :(得分:1)

很抱歉,在我写完这篇文章之前,我误解了这个问题。 如果你想在StackPanel中设置多个复选框,我的答案很有用。

通过将整个应用程序放入app.xaml的合并词典中来隐式设置整个应用程序的样式。

<Style TargetType="CheckBox" BasedOn="{DynamicResource YourBaseStyle}"/>

这也适用于更小的范围。将范围简化为StackPanel只需要将相同的代码行添加到StackPanel.Resources标记中。