2011-03-22 89 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