IsMouseOver 和MouseEnter\MouseLeave 事件
在介面程式中IsMouseOver 屬性用來判斷滑鼠是否在某個介面元素上懸停。
如果當一個介面元素在邏輯樹中被另外一個元素包含,當滑鼠同時停在兩個元素上的時候,兩個元素的IsMouseOver 都是true,無論下面的元素是否被遮住。
當IsMouseOver 屬性從false變為true的時候會觸發UIElement 的MouseEnter 事件,當IsMouseOver 屬性從true變為 false的時候會觸發UIElement 的MouseLeave 事件。
下面的例子中,我們在一個窗口裡放一個包含有一個按鈕的StackPanel ,並且當IsMouseOver 屬性發生改變的時候修改對應的Label的內容。同時註冊他們的MouseEnter
<Window Name="win1">
<StackPanel Name="sp1" Background="Pink" Margin="20,0">
<Button Name="btn1" Content="Click Me" HorizontalAlignment="Center" Padding="10,5"/>
</StackPanel>
</Window>
當滑鼠進入視窗的時候,視窗的IsMouseOver 屬性變為true,並觸發視窗的MouseEnter 事件
當滑鼠進入到StackPanel
當滑鼠移動到按鈕上的時候,按鈕的IsMouseOver 屬性變為true,並觸發MouseEnter事件,而視窗和StackPanel的IsMouseOver屬性依然為true。
當將滑鼠移出按鈕,StackPanel和視窗的時候,他們的IsMouseOver 屬性變為false,並且都觸發了MouseLeave 事件。
*****************************************譯者注****************************************
與IsMouseOver 屬性相關的還有IsMouseDirectlyOver 屬性。IsMouseDirectlyOver 屬性表示滑鼠是否直接懸停在控制元件上方,中間沒有控制元件遮擋。例如上面的例子中,如果滑鼠在按鈕上方懸停,他們的IsMouseOver 屬性都是true,按鈕的IsMouseDirectlyOver 屬性為true,StackPanel和視窗的IsMouseDirectlyOver
屬性為false。