3
votes

I want' to define that every control of specific type inisde a grid gets a Style. This is easy just put the styles with TargetType inside the grid resources. But what then if I wan't to reuse this grid as a style?

I can create a grid style and have a setter to resources but can only put one style there.

<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>

Won't work because the setter can only put one style in.

This is probably something very simple but I'm not getting it and I don't wan't to repeat these styles in each and every grid.

1

1 Answers

10
votes

If you put the Styles inside the Resources of the outer style, they will be in scope inside the grids:

<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>