我尝试为按钮制作样式 有三个事件: onmouseenter - onmouseleave - onclick
在这些活动中上传了不同的图片......我需要将这种风格添加到多个按钮上。
但不知道如何做到这一点。
注意我需要将此代码放在资源字典中,并将其包含在所有应用程序中以添加到所有按钮中。
答案 0 :(得分:0)
覆盖Button的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="Resources\Normal.png"/>
<Image x:Name="MouseOverImage" Source="Resources\MouseOver.png" Visibility="Collapsed"/>
<Image x:Name="PressedImage" Source="Resources\Pressed.png" Visibility="Collapsed"/>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 1 :(得分:0)
试试这个:
<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>
希望这会对你有所帮助。