Ich bin auf der Suche nach einer anwendungsweiten Methode zum Abfangen von Exceptions, die von datengebundenen Eigenschaften-Gettern (und Settern) ausgelöst werden, aber das ist ohne größere Schwierigkeiten machbar.
Keines dieser Ereignisse wird Ausnahmen abfangen, die von getters ausgelöst werden:
%Vor%Eine andere Idee ist die Verwendung einer benutzerdefinierten Bindungsklasse mit einem UpdateSourceExceptionFilter, wie in dieser Thread . Leider fängt diese Methode nur Ausnahmen in Property Settern, nicht getters.
Die letzte Option, die ich gesehen habe, ist die Verwendung eines Trace-Listeners für PresentationTraceSources:
%Vor%Diese Methode scheint im Grunde das zu tun, was ich will. Leider gibt es mir nur eine Zeichenfolge, keine Ausnahme, was bedeutet, dass ich ein bisschen analysieren müsste, um den tatsächlichen Fehler zu finden.
Die TraceListener-Methode würde wahrscheinlich am Ende funktionieren, aber es scheint ein bisschen hackisch zu sein. Gibt es noch andere Optionen, die ich vermisse, oder bin ich mit dem TraceListener festgefahren?
Ich würde einen aspektorientierten Programmierungsansatz (AOP) für dieses Problem vorschlagen. Es würde Ihnen erlauben, Code zur Kompilierzeit zu injizieren, der Ihren Getter mit allem, was Sie wünschen, in diesem Fall ein Versuch / Fang und Protokollierung umschließt. Der einzige, mit dem ich gearbeitet habe, ist PostSharp Laos, die kostenlose Version von PostSharp Ссылка .
Ich glaube, das ist ein guter Anfang, Ссылка , in In diesem Beispiel umschließt er Setter mit der Fähigkeit, NotifyPropertyChanged automatisch aufzurufen. Es gibt einige andere AOP-Projekte, die du auch benutzen könntest, aber ich habe sie nicht benutzt. Hier ist eine schöne Liste: Ссылка . Ich würde webenbasierte Ansätze vorschlagen.
Tags und Links wpf exception-handling binding