Subscribe zu PropertyChanged oder Additionsmethode Aufruf in Setter?

8

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

hinzu %Vor%

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"?

    
chopikadze 04.05.2012, 14:37
quelle

2 Antworten

3

Ich würde definitiv für die erste Methode gehen:

  • es ist klar
  • es ist explizit in seinem Fluss und seiner Absicht
  • es vermeidet komisches (imo) Selbstabonnement

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.

    
Tigran 04.05.2012, 14:58
quelle
3

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%     
Tergiver 04.05.2012 15:53
quelle