gpt4 book ai didi

wpf - WPF-如何编写一个鼠标悬停在网格上的触发器?

转载 作者:行者123 更新时间:2023-12-03 21:12:07 28 4
gpt4 key购买 nike

我看到Button对象具有IsMouseOVer属性。

但是如何为鼠标移到网格或其他上方创建效果
没有IsMouseOver的元素?

谢谢
马尔科姆

编辑:我想通了。我使用了错误的方法来设置触发器。

最佳答案

我意识到我正在响应死线程,但是由于遇到了死线程,并且由于未响应该线程,所以我将对其进行回答。

WPF Grid具有“ IsMouseOver”属性。

我认为有人问这个问题,因为“ IsMouseOver”属性仅在鼠标位于网格本身内的某些控件(例如Button或ComboBox)上时才会更改。

因此,似乎“ IsMouseOver”属性不起作用(特别是如果您使用触发器来设置Grid的Visible属性)。

例如:

<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25" />
<ColumnDefinition />
</Grid.ColumnDefinitions>

<Button Grid.Column="1">A Button</Button>

<Grid.Style>
<Style TargetType="{x:Type Grid}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Opacity" Value="0.5"></Setter>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" Value="1"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</Grid.Style>
</Grid>


上面的网格及其内容将以半透明显示。
您将注意到,如果将鼠标悬停在第一列(不包含任何内容)上,则不透明度不会设置为完全;但是,如果将鼠标悬停在第二列中的按钮上,则不透明度将设置为完全。这是因为第一栏中没有任何内容,因此无法进行点击测试;相反,第二列中的按钮是可点击测试的,因此事件被触发。

如果要让Grid的IsMouseOver属性检测鼠标何时在Grid自身上方的任何地方,您所要做的就是将Grid的Background属性设置为非Null的值(例如,将其设置为Transparent)。设置Background属性将使Grid“命中可测试”。

以下代码将解决该问题:

<Grid Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25" />
<ColumnDefinition />
</Grid.ColumnDefinitions>

<Button Grid.Column="1">A Button</Button>

<Grid.Style>
<Style TargetType="{x:Type Grid}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Opacity" Value="0"></Setter>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" Value="1"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</Grid.Style>
</Grid>


-弗林尼

关于wpf - WPF-如何编写一个鼠标悬停在网格上的触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/402736/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com