对特定类型的所有子元素应用样式
本文关键字:元素 应用 样式 类型 | 更新日期: 2023-09-27 17:52:47
我想为wpf写一个样式,其中所有按钮在一个状态栏(有一个定义的样式)有相同的样式(例如宽度)。
我的样式如下:
<Style TargetType="{x:Type StatusBar}"
x:Key="DialogBoxStatusBarStyle">
<Setter Property="Background"
Value="LightGray" />
<Setter Property="Padding"
Value="5" />
...?
</Style>
和元素的xaml:
<StatusBar Style="{StaticResource ResourceKey=DialogBoxStatusBarStyle}" Grid.Row="3"
FlowDirection="RightToLeft">
<Button Content="Übernehmen"
Width="100"
HorizontalAlignment="Right" />
<Button Content="Abbrechen"
Width="100"
HorizontalAlignment="Right" />
<Button Content="OK"
Width="100"
HorizontalAlignment="Right" />
</StatusBar>
在最终版本中,我不想将所有按钮的宽度设置为100。这应该以StatusBar
的样式定义,或者更好地说,以StatusBar
的按钮子样式定义。
你可以为你的DialogBoxStatusBarStyle
的Resources
添加一个默认的按钮样式:
<Style TargetType="StatusBar" x:Key="DialogBoxStatusBarStyle">
<Style.Resources>
<Style TargetType="Button">
<Setter Property="Width" Value="100"/>
</Style>
</Style.Resources>
...
</Style>
要扩展上面的答案(@Clemens),您甚至可以这样做,独立地重用按钮样式,并将其应用于特定容器的子元素。
样式:
<Style TargetType="{x:Type Button}" x:Key="MyButtonStyle">
<Setter Property="Width" Value="100" />
<Setter Property="HorizontalAlignment" Value="Right" />
</Style>
<Style TargetType="{x:Type StatusBar}" x:Key="DialogBoxStatusBarStyle">
<Setter Property="Background" Value="LightGray" />
<Setter Property="Padding" Value="5" />
<Style.Resources>
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource MyButtonStyle}" />
</Style.Resources>
...
</Style>