Vielleicht ist hier schon solche Frage, aber ich habe es nicht gefunden.
Ich habe MVVM-Anwendung, und in meinem ViewModel
muss ich einige zusätzliche Aktionen auf Änderungen einiger Eigenschaften durchführen (zum Beispiel, wenn View
sie ändert). Welcher Ansatz ist besser für dich und warum?
1. - Fügen Sie AdditionalAction
call zu Setter
2. - Abonnieren Sie selbst INotifyPropertyChanged
%Vor%Stellen Sie sich vor, dass ich kein Leistungsproblem oder 10'000 Objekte habe. Es ist nur Ansicht und ViewModel. Was ist besser? Der erste Code ist "kleiner" und hat weniger Overhead, aber der zweite (für mich) ist klarer und ich kann Code-Snippets für den Code der automatischen Generierungseigenschaften verwenden. Noch mehr - im 2. Fall kann ich im Event-Handler etwas schreiben wie:
%Vor% wo On
Klassenhelfer ist.
Also, was ist besser in deinem Kopf und warum?
AKTUALISIERT:
OK, es sieht so aus, als hätte ich noch einen Ansatz gefunden:
3. - fügen Sie "Erweiterungspunkt" in RaisePropertyChanged hinzu:
%Vor%Auf diese Weise verwenden wir kein Ereignis, sondern alle "zusätzlichen Aktionen" werden vom selben "Erweiterungspunkt" aufgerufen. Ist "ein Platz für alle Zusatzaktionen" besser als "nicht transparenter Workflow"?
Ich würde definitiv für die erste Methode gehen:
Die Vorteile von second, mit denen Sie automatisch generierte Eigenschaften verwenden können, sind die Klarheit des Ausführungsflusses des ersten Falls, imo, nicht wert.
Hoffe, das hilft.
Hier ist das "übliche" Muster. Auf diese Weise können Sie eigenschaftsspezifischen Code in die OnX-Methode einfügen, und abgeleitete Klassen können dasselbe tun. Keine Notwendigkeit für eine große switch-Anweisung, es sei denn natürlich, Sie sind der externe Listener, aber das ist der Kurs für INotifyPropertyChanged.
%Vor%Tags und Links wpf c# mvvm inotifypropertychanged