WPF中样式中的按钮事件



我试图为按钮创建一个样式有三个事件: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>

希望这对你有帮助。

相关内容

  • 没有找到相关文章

最新更新