这是一个Style 触发器 IsMouseOver 触发时设置按钮为红色
关键点 在程序Setter TargetName=“ellipse” Property=“Fill” Value=“Red” ,刚开始设置的时候用的Setter Property=“Background” Value=“Red” 一点作用都没有,最后参照按钮模板源码 找到关键字 TargetName 才恍然大悟
自己理解:如果不指定 TargetName ,程序不知道 Background是那个对象的,所以必须指定 TargetName
在这里插入代码片
<Style TargetType="{x:Type Button}" x:Key="styl1">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid >
<Ellipse Name="ellipse">
<Ellipse.Stroke>
<LinearGradientBrush >
<GradientStop Offset="0" Color="White"/>
<GradientStop Offset="1" Color="Green"/>
</LinearGradientBrush>
</Ellipse.Stroke>
<Ellipse.Fill>
<LinearGradientBrush>
<GradientStop Offset="0" Color="Silver"/>
<GradientStop Offset="1" Color="White"/>
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
<ContentPresenter Margin="10" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="Button.IsMouseOver" Value="True">
<Setter TargetName="ellipse" Property="Stroke" Value="Red"/>
<Setter TargetName="ellipse" Property="Fill" Value="Red"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>