4

我正在尝试设置一个按钮,因此只有当鼠标经过它时,该按钮才会将其视觉属性更改为启用的按钮。

这是我的代码:

    <Button Foreground="Black" Content="OK" Margin="186,100,170,172" >
        <Button.Style>
            <Style TargetType="Button">
                <Setter Property="IsEnabled" Value="False" />
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="IsEnabled" Value="True" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>

在此先感谢您的帮助。

4

2 回答 2

5

您可以将 Button 封装在 Border 中以获得您所追求的

<Border Name="buttonBorder" Margin="186,100,170,172"
        Background="#01000000" BorderBrush="Transparent" BorderThickness="0">
    <Button Foreground="Black" Content="OK">
        <Button.Style>
            <Style TargetType="Button">
                <Setter Property="IsEnabled" Value="False" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=buttonBorder, Path=IsMouseOver}" Value="True">
                        <Setter Property="IsEnabled" Value="True" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>
</Border>
于 2010-12-17T16:09:54.507 回答
2

我不认为你想在这里做什么,因为当按钮被禁用时, IsMouseOver 是假的(而且,它不会生成 MouseMove 或其他事件)。

为了实现你想要的(顺便说一句,当你把鼠标放在它上面时,你为什么要启用一个禁用的按钮?这太不自然了......如果你想用键盘导航到按钮呢?这将是不可能的如果它被禁用),您应该重新设置按钮的样式,并使其在鼠标未悬停时看起来处于禁用状态,而当鼠标悬停在其上时则处于启用状态 - 但这需要一些工作)。

于 2010-12-17T16:01:01.040 回答