在WPF中按钮中的事件按钮

时间:2013-07-01 20:53:31

标签: wpf button styles

我尝试为按钮制作样式 有三个事件: onmouseenter - onmouseleave - onclick

在这些活动中上传了不同的图片......我需要将这种风格添加到多个按钮上。

但不知道如何做到这一点。

注意我需要将此代码放在资源字典中,并将其包含在所有应用程序中以添加到所有按钮中。

2 个答案:

答案 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>

希望这会对你有所帮助。