WPF-Popup bewirkt nicht, dass die Anwendung fokussiert wird, wenn darauf geklickt wird

9

Ich habe ein Steuerelement, das ein Popup mit einigen WPF-Steuerelementen darin verwendet, und StaysOpen="True". Das Problem ist, wenn Sie auf das Popup klicken, wenn die Anwendung keinen Fokus hat, erhält die Anwendung keinen Fokus. Ich habe ein wenig Nachforschungen angestellt, und es scheint, als ob dies daran liegen könnte, dass Popups für Menüs gedacht sind, so dass sie nicht alle richtigen Windows Message Handler haben. Hier ist ein Barebone-Beispiel, um das Problem zu demonstrieren:

%Vor%
  1. Führen Sie die Anwendung aus.
  2. Interagieren Sie mit der Listbox, die gut funktionieren sollte.
  3. Wechseln Sie zu einer anderen Anwendung.
  4. Klicken Sie auf das Listenfeld, während die Anwendung nicht aktiv ist. Nichts passiert
  5. Klicken Sie auf die Anwendung außerhalb der Listbox.
  6. Klicken Sie auf das Listenfeld. Es funktioniert jetzt.

Was ich in Schritt 4 erwarten würde, wäre, dass die Anwendung den Fokus erhält und die Listbox den neuen Eintrag auswählt.

Gibt es irgendwelche Problemumgehungen für dieses Problem oder etwas Offensichtliches, das mir fehlt? Ich versuche, den ganzen Popup-Code mit vollwertigen Fenstern neu zu schreiben und das Verhalten, das wir haben, wieder zu implementieren, aber das scheint wirklich kompliziert zu sein, nur um ein kleines Problem wie dieses zu beheben.

    
FryGuy 24.04.2012, 01:16
quelle

1 Antwort

5

Wenn Sie MouseLeftButtonDown event behandeln, können Sie Window.Activate() method aufrufen. aber Sie sollten es für jedes Element schreiben - Popup und für alle TextBlock s.

Das Problem, das Sie haben können, ist, dass Sie unter Windows Maustasten austauschen können, wo links richtig wurde und umgekehrt (aber ich weiß nicht, wie das funktioniert), also müssen Sie MouseRightButtonDown event behandeln .

    
stukselbax 24.04.2012, 08:37
quelle

Tags und Links