基础用法
<Window.Resources>
<Style x:Key="btnStyle" TargetType="{x:Type Button}">
<Setter Property="Height" Value="40"/>
<Setter Property="Width" Value="100"/>
<Setter Property="Background" Value="Beige"/>
<Setter Property="RenderTransform">
<Setter.Value>
<RotateTransform Angle="45"/>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<StackPanel>
<Button Content="btn1" Style="{StaticResource ResourceKey=btnStyle}"/>
<Button Content="btn2" Style="{StaticResource ResourceKey=btnStyle}"/>
</StackPanel>
样式的继承机制BasedOn=”{StaticResource keyName}”
ResourceKey=可以省略,当有键名时,如果没有键名,则需要默认为TargetType值{StaticResource {x:Type Control}}
<Window.Resources>
<Style x:Key="controlStyle" TargetType="{x:Type Control}">
<Setter Property="Height" Value="40"/>
<Setter Property="Width" Value="100"/>
<Setter Property="Background" Value="Blue"/>
<Setter Property="RenderTransform">
<Setter.Value>
<RotateTransform Angle="45"/>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="btnStyle" BasedOn="{StaticResource ResourceKey=controlStyle}"
TargetType="{x:Type Button}">
<Setter Property="Background" Value="Gray"/>
</Style>
<Style x:Key="radioBtn" BasedOn="{StaticResource controlStyle}"
TargetType="{x:Type RadioButton}">
<Setter Property="FontSize" Value="50"/>
</Style>
</Window.Resources>
<StackPanel>
<Button Content="btn1" Style="{StaticResource ResourceKey=btnStyle}"/>
<Button Content="btn2" Style="{StaticResource ResourceKey=btnStyle}"/>
<RadioButton Content="radioBtn" Style="{StaticResource radioBtn}"/>
</StackPanel>
触发器
三种触发器:
(1)属性触发器(Trigger):如代码1所示
(2)数据触发器(DataTrigger):普通.NET属性,而不仅仅依赖属性值改变时触发
(3)事件触发器(EventTrigger):触发路由事件时会被调用,代码2所示
<Style x:Key="btnStyle" BasedOn="{StaticResource ResourceKey=controlStyle}"
TargetType="{x:Type Button}">
<Setter Property="Background" Value="Gray"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="BlanchedAlmond">
</Setter>
</Trigger>
</Style.Triggers>
</Style>
<Button Content="btn1" Style="{StaticResource ResourceKey=btnStyle}">
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="0"
To="1" Duration="0:0:5"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>