Wie mache ich mein WPF-Kontextmenü weg, wenn der Benutzer außerhalb des Menüs klickt?

9

Zuerst die Standardinfo:

VS2010 ultimative
Win7 Ultimate x64
WPF-App

Das WPF-Kontextmenü:

%Vor%

Der Code, um es zu zeigen:

%Vor%

Das Kontextmenü ist ein in XAML erstelltes WPF ContextMenu. Das Benachrichtigungssymbol in der Taskleiste ist ein Formular Benachrichtigungssymbol (ich kenne kein systemeigenes WPF Benachrichtigungssymbol). Daher wird die notificon.ContextMenu Eigenschaft nicht verwandt. Der obige Code funktioniert einwandfrei. Wenn der Benutzer mit der rechten Maustaste auf das Benachrichtigungssymbol klickt, wird das Kontextmenü angezeigt.

Das Problem, das ich habe, ist, das ContextMenu zu entfernen, wenn ich will. Es geht gut, solange Sie irgendwo in der WPF-App klicken. Dieses Verhalten ist automatisch. Wenn der Benutzer jedoch auf eine andere Stelle klickt, z. B. auf die Taskleiste, wird das Menü nicht ausgeblendet. "LostFocus" -Ereignisse werden nicht ausgelöst, da diese Ereignistypen nur ausgelöst werden, wenn ein Element den Fokus auf ein anderes Element in derselben App verliert. Was die App betrifft, verliert das ContextMenu nie den Fokus. "Deaktiviert" war ein anderes Ereignis, das ich versuchte zu verwenden. Ich sollte an dieser Stelle klarstellen, dass die Anwendung eine Option "nahe am Tablett" hat, so dass die Anwendung das deaktivierte Ereignis schließen und auslösen kann, bevor der Benutzer die Möglichkeit hat, mit der rechten Maustaste zu klicken und das Menü anzuzeigen. Die App wird nicht reaktiviert, wenn das Menü erscheint, daher wird die deaktivierte sogar nicht ausgelöst, wenn ich auf die Taskleiste klicke.

Also endlich die Frage. Wie kann ich mein Kontextmenü verschwinden lassen, wenn der Benutzer davon wegklickt, auch wenn der Ort, auf den der Benutzer klickt, nicht in der Anwendung vorhanden ist, die das Kontextmenü erstellt hat?

    
John 04.04.2011, 03:09
quelle

1 Antwort

0

Ich weiß nicht, ob das eine brauchbare Option ist, aber wenn Sie zu dieser Bibliothek wechseln, werden Sie das tun ein gut integriertes Tray-Icon für WPF ohne solche Probleme (es gibt dort auch Beispielcode für ContextMenus)

    
H.B. 04.04.2011, 03:36
quelle