0

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

在这些事件上上传不同的图像......我需要将这种样式添加到多个按钮上。

但不知道如何在风格上做到这一点。

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

4

2 回答 2

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>
于 2013-07-01T21:33:27.060 回答
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>

希望这对您有所帮助。

于 2013-07-02T05:06:15.430 回答