我在Button
上有ContextMenu
,我想在MouseEnter
事件上打開,而不是在默認的右鍵單擊事件上打開。這是我的XAML:通過ContextMenus使用MouseEnter/MouseLeave事件
和相關的事件處理程序:
private void Button_MouseEnter(object sender, MouseEventArgs e)
{
backButtonContextMenu.Placement = PlacementMode.Bottom;
backButtonContextMenu.IsOpen = true;
Console.WriteLine("MouseEnter called");
}
private void Button_MouseLeave(object sender, MouseEventArgs e)
{
backButtonContextMenu.IsOpen = false;
Console.WriteLine("MouseLeave called");
}
漂亮的直線前進。不幸的是,當將鼠標懸停在按鈕上時,這兩種方法會無限地調用,來回交替。下面是我的控制檯輸出的一個例子:
MouseEnter called
MouseLeave called
MouseEnter called
MouseLeave called
MouseEnter called
MouseLeave called
MouseEnter called
MouseLeave called
... etc. ...
我假設這事做與文本菜單偷的焦點,當它是開放的,或者放下某種看不見的「幫手」背景下的檢測何時需要關閉。有沒有人有這種行爲的解釋,有沒有辦法避免它?從用戶界面的角度來看,這是一個非常簡單的效果。
在mouseEnter上,您應該檢查ContextMenu是否打開。如果它已經打開,則不應再打開它。 – Dilshod