2011-03-22 232 views
15

WPF Grid有一个“IsMouseOver”属性,您可以在Grid的样式的触发器中使用该属性。WPF Grid IsMouseOver属性

我的问题是,“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> 

以上电网和它的内容将在半透明度来显示,这样就可以看到控件。

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

但是,如果你将鼠标悬停在第二栏按钮透明度被设置为全。

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

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

谢谢!

-Frinny

回答

27

你的问题是,电网本身没有命中检验的,因为它没有背景。试试这个:

<Grid Background="Transparent"> 
+0

非常感谢您的回复! – Frinavale 2011-03-22 20:21:19

9

设置网格背景透明,那么它应该工作

的详细信息为什么会是这样,请look here

+0

非常感谢你的回应!额外的信息是有帮助的。 – Frinavale 2011-03-22 20:21:36