У меня есть ContextMenu
экземпляра WPF, объявленные в моем XAML как этогоМой WPF ContextMenu не отвергая, когда я нажимаю в другом месте
<Window.ContextMenu>
<ContextMenu>
<MenuItem Header="Do Nothing"/>
<Separator/>
<MenuItem Header="{x:Static p:Resources.MenuExit}" Click="IconMenu_Exit"/>
</ContextMenu>
</Window.ContextMenu>
Я использую WinForms NotifyIcon
, чтобы отобразить иконку в трее, как этот
_notifyIcon = new System.Windows.Forms.NotifyIcon();
_notifyIcon.Icon = Properties.Resources.mainicon;
_notifyIcon.Visible = true;
_notifyIcon.MouseClick += new System.Windows.Forms.MouseEventHandler(OnTrayIconMouseClick);
реализация обработчика щелчка мыши этот
private void OnTrayIconMouseClick(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
ContextMenu.IsOpen = true;
}
}
Это отображает контекстное меню, и щелчок по пунктам меню отклоняет его, но если я просто перейду в другое окно, контекстное меню останется видимым. Это похоже на странное поведение по умолчанию. Есть ли другой способ отобразить контекстное меню, отличное от IsOpen
, или мне нужно явно скрыть контекстное меню?
Редактировать: Не знаю, имеет ли значение, но в окне DataContext
установлено значение this
в коде.
Редактирование 2: контекстное меню правильно отменяется, если оно вызывается щелчком правой кнопки мыши по фактическому главному окну, но не с иконки в трее.
Я никогда не устанавливал его в true. Даже явно устанавливая его в false в XAML, я получаю те же результаты – cppguy
IsHitTestVisible = true? Если элемент является дочерним элементом элемента, который не является hittestvisible, ребенок остается ложным – cjsmith
@cjsmith Устанавливая его явно в True, это не имеет никакого значения. – cppguy