Ich arbeite in WPF mit dem MVVM-Muster, und im Allgemeinen scheinen die Dinge ziemlich gut zu arbeiten, wie ich mein Gehirn um die Nuancen von WPF und MVVM wickeln. Ich bin jedoch momentan auf einem bestimmten Problem festgefahren. Meine eigentliche Anwendung ist ziemlich komplex, also nehmen wir einfach Josh Smiths near-defining article auf das Muster und verwenden Sie die Anwendung darin.WPF: LostFocus-Ereignis auf einem bestimmten Steuerelement/View/Viewmodel
Betrachten Sie Abbildung 2, und stellen Sie sich vor, dass der Benutzer in den Vor- und Nachnamen Felder eingegeben hat. Dann klickt der Benutzer vollständig vom Arbeitsbereich (Ansichtsmodell) weg, entweder durch Klicken auf eine andere Kundenregisterkarte oder möglicherweise ein völlig anderes Ansichtsmodell in derselben Anwendung. In diesem Fall möchte ich, dass die Anwendung fragt: "Hey, wollten Sie Ihre Änderungen speichern? Ja/Nein/Abbrechen" und entsprechend reagieren. Dies hat ... Herausforderungen dargestellt.
Da ich möchte, dass der Benutzer "abbrechen" kann, schlägt First-Pass vor, PreviewLostKeyboardFocus zu benötigen (da ich Handled = true festlegen und die Fokusverschiebung abbrechen konnte). Einige Benutzeraktionen (z. B. das Klicken auf die Registerkarte eines anderen Arbeitsbereichs) verschieben den Tastaturfokus jedoch nicht. LostFocus deckt mich in dieser Hinsicht besser ab, aber erst, nachdem der Fokus bereits verloren gegangen ist (obwohl ich natürlich zurückschalten könnte) und es gibt Probleme bei der Feststellung, ob das Ereignis von der Ansicht selbst stammt (dh wir gehen weg) die ganze Ansicht) oder wenn es einfach aus irgendeinem enthaltenen Objekt herausgeblasen wird.
Und ein großes Bild auf all dies - das scheint ein Problem für die Ansicht zu sein, aber dann bedeutet das Schreiben von Code in der Ansicht, anstatt das magische Viewmodel. Was mich denken lässt, dass ich das nicht richtig ansehe.
Also ich hoffe, ich vermisse einige große konzeptionelle a-ha, die das alles klar machen wird. Hilfe?
Der Blog-Link ist kaputt – Eldho