WPF Grid具有一个名为“IsMouseOver”的属性,您可以在Grid的样式触发器中使用。
我的问题是,“IsMouseOver”属性仅在鼠标悬停在Grid内的某些控件(例如Button或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>
以上的网格及其内容将被显示为半透明,以便您可以看到控件。
如果您将鼠标悬停在不包含任何内容的第一列上,您会注意到不会将不透明度设置为完全不透明。
但是,如果您将鼠标悬停在第二列中的按钮上,则不透明度将被设置为完全不透明。
在我的应用程序中,我设置触发器的网格被显示在图像控件的顶部。我不希望在鼠标悬停在图像上之前显示网格...换句话说,由于网格位于图像的上方,因此只有当鼠标悬停在网格上时(网格的任何位置),我才希望显示网格,因为网格位于图像的上方。
有谁知道如何实现这一点?
谢谢!
-Frinny