기본 마우스 오른쪽 버튼 클릭 이벤트 대신 MouseEnter
이벤트에서 열고 싶은 Button
에 ContextMenu
이 있습니다.ContextMenus에서 MouseEnter/MouseLeave 이벤트 사용
<Button Content="Button" MouseEnter="Button_MouseEnter" MouseLeave="Button_MouseLeave">
<Button.ContextMenu>
<ContextMenu>
.... context menu items ....
</ContextMenu>
</Button.ContextMenu>
</Button>
그리고 관련 이벤트 핸들러 : 꽤 똑바로 앞으로
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");
}
여기 내 XAML입니다. 불행히도 버튼 위로 마우스를 가져 가면이 두 메서드가 앞뒤로 번갈아 호출됩니다. 여기 내 콘솔 출력의 예 :
MouseEnter called
MouseLeave called
MouseEnter called
MouseLeave called
MouseEnter called
MouseLeave called
MouseEnter called
MouseLeave called
... etc. ...
나는이 열려 때 초점을 훔치는의 ContextMenu 함께 할 수있는 뭔가가 있으리라 믿고있어가, 혹은 감지하는 눈에 보이지 않는 '도우미 "배경의 어떤 종류를 내려 놓고 언제 닫아야 하는가? 누구나이 동작에 대한 설명을 가지고 있으며이를 피할 수있는 방법이 있습니까? 이것은 UI 관점에서 볼 때 매우 간단한 효과입니다. ContextMenu
가 호출 될 때 사이클 COS에 무슨 일
mouseEnter에서 ContextMenu가 열려 있는지 여부를 확인해야합니다. 이미 열려 있으면 다시 열지 마십시오. – Dilshod