将样式放在网格样式内的控件上

时间:2010-07-05 12:40:38

标签: wpf resources grid styles setter

我想'定义一个网格中特定类型的每个控件都获得一个Style。只需将具有TargetType的样式放在网格资源中即可。但是,如果我不想将这个网格重用为一种风格呢?

我可以创建网格样式并设置资源设置器,但只能在其中放置一种样式。

<Style x:Key="GridStyle" TargetType="Grid">
    <Setter Property="Resources">
        <Setter.Value>
            <Style TargetType="TextBlock" BasedOn="{StaticResource MainText}" />
            <Style TargetType="{x:Type RowDefinition}">
                <Setter Property="Height" Value="Auto"/>
            </Style>
            <Style TargetType="Button" BasedOn="{StaticResource MainButton}" />
        </Setter.Value>
    </Setter>
</Style>

无效,因为setter只能放入一种样式。

这可能非常简单,但我没有得到它,我不想在每个网格中重复这些样式。

1 个答案:

答案 0 :(得分:8)

如果将样式放在外部样式的资源中,它们将位于网格内的范围内:

<Style x:Key="GridStyle" TargetType="Grid">
    <Style.Resources>
        <Style TargetType="TextBlock" BasedOn="{StaticResource MainText}" />
        <Style TargetType="{x:Type RowDefinition}">
            <Setter Property="Height" Value="Auto"/>
        </Style>
        <Style TargetType="Button" BasedOn="{StaticResource MainButton}" />
    </Style.Resources>
</Style>