Bin ich es nur, oder ist WPF ein Durcheinander von Datenbindungs- und benutzerdefinierten IValueConvertern?

Im Ernst, es scheint, als würde ich jedes Mal, wenn ich meine Benutzeroberflächenelemente miteinander kommunizieren lassen möchte, einen neuen, benutzerdefinierten IValueConverter programmieren :(. Jemand sagt mir, dass ich es falsch mache, bitte!

Beispiele:

Ich wollte, dass eine Schaltfläche nur aktiviert wird, wenn mein Textfeld eine gültige URI enthält. Tolle Zeit, aUriIsValidConverter!Hoppla, ich wollte es auch deaktivieren, während ich etwas bearbeite. Ich denke, jetzt muss ich einen Code eingebenUriIsValidAndBoolIsFalseMultiConverter!Ich möchte eine Liste von Dateien in einem bestimmten Verzeichnis (angegeben durch ein Textfeld) in einem Listenfeld anzeigen. Ich brauche wohl eineDirectoryPathToFileList Konverter!Oh hey, ich möchte Symbole für jede dieser Dateien in der Listenansicht. Zeit für eineFileInfoToBitmap Konverter!Ich möchte, dass mein Status rot ist, wenn meine Statuszeichenfolge "Fehler" enthält, und ansonsten grün. Ja, ich kann aStatusStringToSolidColorBrushConverter!

Ich bin wirklich der Meinung, dass dies nicht viel besser ist als die alte Windows Forms-Methode, bei der einfach alles manuell verdrahtet wirdTextChanged Ereignisse (oder was auch immer). Was ich denke, ist immer noch eine Option. Ist es das, was die Leute vielleicht tatsächlich tun und ich versuche zu sehr, alles in das Paradigma der Datenbindung zu integrieren?

Also ja, bitte sag mir, ob das wirklich so ist wie WPF-Codierung - oder ob ich es falsch mache und wenn ja, was ichsollte tun.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage