Предположим, у меня есть стиль WPF для элемента контейнера, такого как сетка, который автоматически применяет стили к его дочерним элементам, например:
<Window.Resources>
<Style TargetType="Grid" x:Key="FormStyle">
<Style.Resources>
<Style TargetType="Label">
<Setter Property="FontSize" Value="50"/>
</Style>
</Style.Resources>
</Style>
</Window.Resources>
Как я могу затем переопределить элементы certian этого стиля в пределах сама сетка? Например, предположим, что я хотел, чтобы одна сетка имела FormStyle, но также имела синюю метку, например так (что не работает):
<!-- this works fine and Label size = 50 -->
<Grid Style="{StaticResource FormStyle}">
<Label Content="Blah"/>
</Grid>
<!-- But this doesnt, label is blue, but normal font size -->
<Grid Style="{StaticResource FormStyle}">
<Grid.Resources>
<Style TargetType="Label" BasedOn="{StaticResource {x:Type Label}}">
<Setter Property="Foreground" Value="Blue"/>
</Style>
</Grid.Resources>
<Label Content="Blah"/>
</Grid>
Я ожидаю, что BasedOn={StaticResource {x:Type Label}}
будет ссылаться на текущий активный стиль для меток. в текущей области видимости - т.е. стиль метки в FormStyle. Но это явно не относится и относится к базовому внешнему стилю меток.
Если я сделаю, например, это глобально
<Style TargetType="Label">
<Setter Property="FontSize" Value="50"/>
</Style>
Тогда все в порядке.
Я мог бы Конечно, просто назовите стили, но, должно быть, есть более простой / менее подробный способ?
Спасибо