WPF bringt mich hier wirklich aus den Nerven. Ich habe ein Popup mit komplexem Inhalt (Grid, Buttons etc.) konfiguriert. Ich setzte seine StaysOpen-Eigenschaft auf False und IsOpen auf True in einem Textbox-MouseDown-Vorschau-Ereignis.
Das ist, dass es sich öffnet, aber nie schließt, wenn Sie irgendwo außerhalb des Fensters klicken.
Irgendwelche Vorschläge?
Danke!
UPDATE:
Mein Popup enthält Schaltflächen. Wenn ich auf einen davon klicke, wird das Popup geschlossen, wenn ich darauf klicke. Gibt es seltsame Dinge, die mit dem Event-Routing zusammenhängen?
Es sieht so aus, als ob das Popup nicht geschlossen wird, wenn es von einem anderen Kontrollereignis geöffnet wird. Ich habe gerade die IsOpen-Eigenschaft an die IsChecked-Eigenschaft eines ToggleButton gebunden, um eine Combobox zu simulieren.
Danke für all deine Antworten.
Ich setze IsOpen auf ein Textbox-MouseDown-Vorschau-Ereignis.
Legen Sie es auf was? Und wo wird die TextBox gehostet?
Ich kann nur mit den wenigen zur Verfügung gestellten Informationen raten, aber ich würde sagen, wenn du außerhalb von Popup
klickst, feuert dein Event-Handler und öffnet es wieder.
Ich hatte dieses Problem auch, außer beim PreviewMouseButtonUp-Ereignis eines Buttons. Die Annahme, dass es einen Bug mit Popups gibt und versuchen, sie in Tunneling-Events zu öffnen, war korrekt und führte mich den Weg zu meinem Fix (der etwas generischer ist).
Ich musste dies auflösen (das Host-Steuerelement war generisch / könnte mehrere Arten von Steuerelementen enthalten), indem ich auf das bubbling -Ereignis statt auf das Tunneling-Ereignis lauschte, speziell mit AddHandler (RoutedEvent, Delegate, Boolean) Methode, um behandelte Ereignisse zu erfassen.
WAG das Problem liegt irgendwo beim Übergang vom Tunneln zum Blubbern.