2009-04-27 5 views
2

Ich habe ein datengebundenes WPF CheckBox-Steuerelement, die Ausnahmen zu essen scheint von der entsprechenden Eigenschaft Setter, wenn der Wert in der Benutzeroberfläche umgeschaltet wird. Ich weiß, dass dies passieren kann, wenn ich für die Binding-Instanz eine ExceptionValidationRule bereitstelle, aber ich habe überprüft, dass die ValidationRules für die Binding-Instanz den Wert null haben. Ich habe auch den Aufruf-Stack für dazwischenliegende Ausnahme-Handler überprüft und keine existieren. Nichtsdestotrotz springt die geworfene Ausnahme nicht nach oben und erzeugt einen Absturz in der App, wie ich es erwarten würde.Databound WPF CheckBox Essen Ausnahmen auf Wert gesetzt

Wenn ich eine Ausnahme von einem Button-Click-Handler in der gleichen UI ausspreche, stürzt die Exception ab und verursacht einen Anwendungsabsturz, wodurch eine Art globaler Ausnahme-Handler ausgeschlossen wird.

Irgendwelche Ideen?

Danke!

Antwort

3

Um die Antwort von itowlson hinzuzufügen, bietet die Klasse Binding die Eigenschaft UpdateSourceExceptionFilter, die es ermöglicht, Logik bereitzustellen, die ausgeführt wird, wenn eine Ausnahme beim Aktualisieren der Quelle auftritt. Es wird in Verbindung mit der Klasse ExceptionValidationRule verwendet und ermöglicht Ihnen, etwas anderes als das Hinzufügen eines ValidationError zu tun, wenn das Update fehlschlägt.

2

Nein, dies ist das erwartete Verhalten: Die WPF-Datenbindungsinfrastruktur fängt Ausnahmen ab, die durch das Speichern des Werts von einem Bindungsziel zurück zur Quelle verursacht werden. Ich vermute, dass dies daran liegt, dass die App keinen Ausnahmehandler für die Sicherungsoperation einrichten kann (weil sie aus WPF-Code statt aus App-Code aufgerufen wird). Wenn WPF dies nicht tut, stürzt die App ab die Chance, mit der Ausnahme umzugehen.

(Im Gegensatz dazu in einem Button-Klick-Handler, werden Sie den Code zu schreiben, so Sie die Gelegenheit zu tun haben Ausnahmen zu behandeln. Deshalb WPF denkt, dass es in Ordnung ist, die Ausnahme zu lassen propagieren, wenn Sie sich nicht entscheiden, es zu handhaben.)

Verwandte Themen