基础用法
<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>
