样式可以写一个母模板,其他的样式继承。以button为例,母模板如下:
实现的功能是:鼠标移动上面改变背景色,点击变颜色
其中的data,用的是ico代码
<Style x:Key="BaseButton" TargetType="{x:Type Button}" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid Background="Transparent" Margin="0,0,0,0" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}">
<StackPanel x:Name="iconPath" Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Path Data="{Binding Tag, RelativeSource={RelativeSource TemplatedParent}}"
Style="{StaticResource GridRecordButtonStyle}" x:Name="icon"/>
</StackPanel>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Fill" Value="{DynamicResource ToggleButtonMouseOverFill}" TargetName="icon"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Fill" Value="{DynamicResource ToggleButtonMouseOverFill}" TargetName="icon"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
按钮一
<Style x:Key="RecordDetailButton" TargetType="{x:Type Button}" BasedOn="{StaticResource BaseButton}">
<Setter Property="Tag" Value="M5,3C3.89,3 3"></Setter>
</Style>
按钮二
<Style x:Key="RecordEditButton" TargetType="{x:Type Button}" BasedOn="{StaticResource BaseButton}">
<Setter Property="Tag" Value="M521.258667 "></Setter>
</Style>
xaml中调用
按钮一
<Button Style="{StaticResource RecordDetailButton}" />
按钮二
<Button Style="{StaticResource RecordEditButton}" />