【问题标题】:using a trigger to set a button IsEnabled to be true on mouse over在鼠标悬停时使用触发器将按钮 IsEnabled 设置为 true
【发布时间】:2010-12-17 15:46:21
【问题描述】:

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

这是我的代码:

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

提前感谢您的帮助。

【问题讨论】:

  • 这行得通吗?我认为应该:S

标签: wpf xaml styles isenabled


【解决方案1】:

您可以将您的 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>

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-08-22
      • 2016-03-15
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 2011-04-26
      • 2021-10-18
      • 2017-10-05
      • 1970-01-01
      相关资源
      最近更新 更多