WPF Grid IsMouseOver属性

Fri*_*ale 16 wpf

WPF网格有一个"IsMouseOver"属性,你可以在网格的风格的触发器使用.

我的问题是,只有当鼠标位于网格本身的某个控件(即Button或ComboBox)之外时,"IsMouseOver"属性才会更改.

例如:

<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>
Run Code Online (Sandbox Code Playgroud)

上面的Grid及其内容将以半透明度显示,以便您可以看到控件.

您会注意到,如果将鼠标悬停在第一列(不包含任何内容)上,则不透明度将不会设置为完整.

但是,如果将鼠标悬停在第二列中的按钮上,则不透明度设置为完整.

在我的应用程序中,我正在设置触发器的网格显示在图像控件的顶部.我不希望在鼠标悬停在图像上之前显示网格...换句话说,由于网格位于图像的顶部,我不希望显示网格,直到鼠标悬停在图像上方网格(网格中的任何位置),因为网格位于图像的顶部.

有谁知道如何做到这一点?

谢谢!

-Frinny

mic*_*tan 29

你的问题是网格本身不是可测试的,因为它没有背景.试试这个:

<Grid Background="Transparent">
Run Code Online (Sandbox Code Playgroud)


Mar*_*ter 10

将网格背景设置为透明,然后它应该工作

详情为何如此,请看这里