csharp-样式

在资源里面定义 style 可以在控件中引用。

如果控件中有指定的样式,则覆盖资源定义的 style

资源样式支持继承。

 <Window.Resources>
<Style x:Key="btnStyleBase" TargetType="Button">
<Setter Property="FontSize" Value="30"></Setter>
</Style>
<Style x:Key="btnStyle" TargetType="Button" BasedOn="{StaticResource btnStyleBase}">
<Setter Property="Foreground" Value="Blue"></Setter>
</Style>
</Window.Resources>
<Grid x:Name="grid_main">
<Button Style="{StaticResource btnStyle}" Grid.Row="1" Click="Button_Click">
<Button.FontWeight>Bold</Button.FontWeight>
...
</Button>
...
</Grid>

触发器

可以通过触发器动态改变样式

<Style x:Key="btnStyleBase" TargetType="Button">
<Setter Property="FontSize" Value="30"></Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Red"></Setter>
<Setter Property="FontSize" Value="10"></Setter>
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Foreground" Value="Blue"></Setter>
<Setter Property="FontSize" Value="30"></Setter>
</Trigger>
</Style.Triggers>
</Style>

多条件触发

<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"></Condition>
<Condition Property="IsFocused" Value="True"></Condition>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Foreground" Value="Red"></Setter>
</MultiTrigger.Setters>
</MultiTrigger>

事件触发器

<Window.Resources>
<Style x:Key="btnStyleBase" TargetType="Button">
<Setter Property="FontSize" Value="30"></Setter>
<Style.Triggers>
<EventTrigger RoutedEvent="Mouse.MouseEnter">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:1"
Storyboard.TargetProperty="FontSize"
To="10" ></DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
<Style x:Key="btnStyle" TargetType="Button" BasedOn="{StaticResource btnStyleBase}">
<Setter Property="Foreground" Value="Blue"></Setter>
</Style>
</Window.Resources>