我试图为按钮创建一个样式有三个事件:onmouseenter-onmouseleave-onclick
在这些事件上传不同的图像。。。我需要将这种样式添加到多个按钮上。
但不知道如何在风格上做到这一点。
注意,我需要将此代码放在资源字典中,并将其包含在所有要添加到所有按钮的应用程序中。
覆盖按钮的ControlTemplate并使用VisualStates来处理不同的状态:
<Style TargetType="{x:Type Button}" x:Key="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid Background="Transparent">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="Pressed"/>
<VisualState x:Name="MouseOver">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="MouseOverImage"
Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Collapsed}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="ButtonBackground" Margin="0" >
<Image x:Name="NormalImage" Source="ResourcesNormal.png"/>
<Image x:Name="MouseOverImage" Source="ResourcesMouseOver.png" Visibility="Collapsed"/>
<Image x:Name="PressedImage" Source="ResourcesPressed.png" Visibility="Collapsed"/>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
试试这个:
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="viewImage" Property="Source" Value="/Images/noImage.png" />
</Trigger>
<Trigger Property="OnMouseEnter" Value="True">
<Setter TargetName="viewImage" Property="Source" Value="/Images/noImage.png" />
</Trigger>
<Trigger Property="OnMouseLeave" Value="True">
<Setter TargetName="viewImage" Property="Source" Value="/Images/noImage.png" />
</Trigger>
</Style.Triggers>
</Style>
希望这对你有帮助。