做控件时,有时候需要button按下后button自身样式有变化,可对style做如下
<Style x:Key="Style_Button_ChangeStateButton" TargetType="{x:Type Button}">
<Setter Property="Background" Value="#FF595959"/>
<Setter Property="BorderBrush" Value="#363636"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Foreground" Value="white"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="0"/>
<Setter Property="Width" Value="24"/>
<Setter Property="Height" Value="24"/>
<Setter Property="SnapsToDevicePixels" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}">
<Border x:Name="Border" CornerRadius="4" Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="True">
<ContentPresenter x:Name="btnContent" RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
HorizontalAlignment="{TemplateBinding Property=HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding Property=VerticalContentAlignment}"
Margin="{TemplateBinding Padding}"/>
</Border>
<Image x:Name="state1" Width="24" Height="24" Stretch="Uniform" Visibility="Collapsed"
Source="{DynamicResource Picture0}"/>
<Image x:Name="state2" Width="24" Height="24" Stretch="Uniform" Visibility="Collapsed"
Source="{DynamicResource Picture1}"/>
<Image x:Name="state3" Width="24" Height="24" Stretch="Uniform" Visibility="Collapsed"
Source="{DynamicResource Picture2}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="Uid" Value="Style_0">
<Setter Property="Visibility" TargetName="state1" Value="Visible"/>
<Setter Property="Visibility" TargetName="state2" Value="Collapsed"/>
<Setter Property="Visibility" TargetName="state3" Value="Collapsed"/>
</Trigger>
<Trigger Property="Uid" Value="Style_1">
<Setter Property="Visibility" TargetName="state1" Value="Collapsed"/>
<Setter Property="Visibility" TargetName="state2" Value="Visible"/>
<Setter Property="Visibility" TargetName="state3" Value="Collapsed"/>
</Trigger>
<Trigger Property="Uid" Value="Style_2">
<Setter Property="Visibility" TargetName="state1" Value="Collapsed"/>
<Setter Property="Visibility" TargetName="state2" Value="Collapsed"/>
<Setter Property="Visibility" TargetName="state3" Value="Visible"/>
</Trigger>
<Trigger Property="IsPressed" Value="true"/>
<Trigger Property="IsMouseOver" Value="true"/>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Opacity" TargetName="btnContent" Value="0.4"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Button Style="{DynamicResource Style_Button_Common_ModeChangeLayerStateButton}"
Uid="{Binding Style, Converter={StaticResource }}">
</Button>
使用时对Uid传递不同的值即可更改button样式