样式
由System.Windows.Style类表示。
<StackPanel> <StackPanel.Resources> <Style x:Key="ButtonStyle"> <Setter Property="Button.FontSize" Value="22"/> <Setter Property="Button.Background" Value="Purple"/> <Setter Property="Button.RenderTransformOrigin" Value=".5,.5"/> </Style> <!-- 继承ButtonStyle --> <Style x:Key="ButtonStyle2" BasedOn="{StaticResource ButtonStyle}"> <Setter Property="Button.FontWeight" Value="Bold"/> </Style> </StackPanel.Resources> <Button Style="{StaticResource ButtonStyle}">1</Button> <Button Style="{StaticResource ButtonStyle2}">2</Button> </StackPanel>
共享Style
<StackPanel> <StackPanel.Resources> <Style x:Key="ButtonStyle"> <Setter Property="Control.FontSize" Value="22"/> <Setter Property="Control.Background" Value="Purple"/> <Setter Property="Control.RenderTransformOrigin" Value=".5,.5"/> <!-- 只对存在的属性进行设置,不存在则忽略 --> <Setter Property="Button.ClickMode" Value="Press"/> </Style> <!-- 继承ButtonStyle --> <Style x:Key="ButtonStyle2" BasedOn="{StaticResource ButtonStyle}"> <Setter Property="Control.FontWeight" Value="Bold"/> </Style> </StackPanel.Resources> <Button Style="{StaticResource ButtonStyle}">1</Button> <Button Style="{StaticResource ButtonStyle2}">2</Button> <TextBox Style="{StaticResource ButtonStyle2}" >TextBox</TextBox>
限制Style使用
让Style应用到一个特定类型上,设置TargetType属性。
<StackPanel.Resources> <Style x:Key="LblStyle" TargetType="{x:Type Label}"> <Setter Property="Background" Value="Olive"/> </Style> </StackPanel.Resources> <!-- 用到非Label对象上将报错 --> <Label Style="{StaticResource LblStyle}">Label</Label>
创建隐式Style
设置Style的TargetType还有另一功能,忽略key属性,该Style隐式应用到所有目标类型元素。
其实有一隐式设置的键名,即为TargetType,因此同一TargetType只可有一个隐式Style,否则报错。
<StackPanel.Resources> <!-- 不显示添加key --> <Style TargetType="{x:Type Label}"> <Setter Property="Background" Value="Olive"/> </Style> </StackPanel.Resources> <Label>Label</Label>