WPF网格有一个"IsMouseOver“属性,您可以在网格样式的触发器中使用它。
我的问题是,"IsMouseOver“属性只有在鼠标位于网格本身内的某个控件(即按钮或ComboBox)之上时才会发生更改。
例如:
<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和它的内容将以半不透明的形式显示,这样您就可以看到控件。
您将注意到,如果悬停在第一列(不包含任何内容)上,不透明度将不会设置为完全。
但是,如果您悬停在第二列的按钮上,则不透明度将设置为完全。
在我的应用程序中,我设置触发器的网格显示在图像控件的顶部。我不想在鼠标悬停在图像上之前显示网格.换句话说,由于Grid位于图像的顶部,所以我不希望在鼠标悬停在网格(网格中的任何位置)之前显示网格,因为网格位于图像的顶部。
有人知道如何做到这一点吗?
谢谢!
-Frinny
发布于 2011-03-22 17:32:32
您的问题是网格本身并不是可测试的,因为它没有背景。试一试:
<Grid Background="Transparent">发布于 2011-03-22 17:31:02
将网格背景设置为透明,然后它就可以工作了。
要了解为什么会这样,请看这儿
https://stackoverflow.com/questions/5395351
复制相似问题