я получил несколько StackPanels
в моем приложении, которые хотят, чтобы их дети, чтобы применить определенные стили:WPF Автоматически назначать стили для детей через родительский стиль
<StackPanel.Resources>
<Style TargetType="TextBlock" BasedOn="{StaticResource SettingLabel}" />
<Style TargetType="DockPanel" BasedOn="{StaticResource SettingRow}" />
<Style TargetType="CheckBox" BasedOn="{StaticResource SettingCheckBox}" />
<Style TargetType="PasswordBox" BasedOn="{StaticResource DialogPasswordBox}" />
<Style TargetType="TextBox" BasedOn="{StaticResource DialogTextBox}" />
</StackPanel.Resources>
Вместо того чтобы писать эти 5 строк снова и снова я, хотя давать StackPanel
сам стиль, который применит их и, следовательно, уменьшит избыточность.
Это не представляется возможным установить Resources
в стиле сеттер, потому что это не свойство зависимостей:
<Style x:Key="SettingPanel" TargetType="StackPanel">
<Setter Property="Resources">
<Setter.Value>
<Style TargetType="TextBlock" BasedOn="{StaticResource SettingLabel}" />
<Style TargetType="DockPanel" BasedOn="{StaticResource SettingRow}" />
<Style TargetType="CheckBox" BasedOn="{StaticResource SettingCheckBox}" />
<Style TargetType="PasswordBox" BasedOn="{StaticResource DialogPasswordBox}" />
<Style TargetType="TextBox" BasedOn="{StaticResource DialogTextBox}" />
</Setter.Value>
</Setter>
</Style>
Так есть ли другой способ сделать это без того, чтобы установить стили на каждого ребенка и повторить назначение стилей?