1. 程式人生 > >IsMouseOver 和MouseEnter\MouseLeave 事件

IsMouseOver 和MouseEnter\MouseLeave 事件

在介面程式中IsMouseOver 屬性用來判斷滑鼠是否在某個介面元素上懸停。

如果當一個介面元素在邏輯樹中被另外一個元素包含,當滑鼠同時停在兩個元素上的時候,兩個元素的IsMouseOver 都是true,無論下面的元素是否被遮住。

IsMouseOver 屬性從false變為true的時候會觸發UIElementMouseEnter 事件,當IsMouseOver 屬性從true變為 false的時候會觸發UIElementMouseLeave 事件。

下面的例子中,我們在一個窗口裡放一個包含有一個按鈕的StackPanel ,並且當IsMouseOver 屬性發生改變的時候修改對應的Label的內容。同時註冊他們的MouseEnter

MouseLeave 事件。

<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

的時候,StackPanelIsMouseOver 屬性變為true,並觸發StackPanelMouseEnter事件。而視窗的IsMouseOver屬性依然為true。

當滑鼠移動到按鈕上的時候,按鈕的IsMouseOver 屬性變為true,並觸發MouseEnter事件,而視窗和StackPanelIsMouseOver屬性依然為true。

當將滑鼠移出按鈕,StackPanel和視窗的時候,他們的IsMouseOver 屬性變為false,並且都觸發了MouseLeave 事件。

*****************************************譯者注****************************************

IsMouseOver 屬性相關的還有IsMouseDirectlyOver 屬性。IsMouseDirectlyOver 屬性表示滑鼠是否直接懸停在控制元件上方,中間沒有控制元件遮擋。例如上面的例子中,如果滑鼠在按鈕上方懸停,他們的IsMouseOver 屬性都是true,按鈕的IsMouseDirectlyOver 屬性為true,StackPanel和視窗的IsMouseDirectlyOver 屬性為false。