Freigeben über


INotifyPropertyChanged-Attribute

Der Typ INotifyPropertyChanged ist ein Attribut, das das Einfügen von MVVM-Unterstützungscode in vorhandene Typen ermöglicht. Zusammen mit anderen zugehörigen Attributen (ObservableObject und ObservableRecipient), dient es dazu, Fachkräfte in der Entwicklung in Fällen zu unterstützen, in denen dieselbe Funktionalität von diesen Typen benötigt wird, die Zieltypen aber bereits von einem anderen Typ implementiert wurden. Da C# keine Mehrfachvererbung zulässt, können diese Attribute stattdessen verwendet werden, damit der MVVM-Toolkit-Generator denselben Code direkt in diese Typen einfügt und auf diese Weise diese Einschränkung umgeht.

Hinweis

Damit das funktioniert, müssen sich annotierte Typen in einer partiellen Klasse befinden. Wenn der Typ geschachtelt ist, müssen auch alle Typen in der Deklarationssyntaxstruktur als partiell annotiert werden. Wenn dies nicht erfolgt, führt dies zu Kompilierungsfehlern, da der Generator keine andere partielle Deklaration dieses Typs mit dem angeforderten zusätzlichen Code generieren kann.

Hinweis

Diese Attribute sollen nur in Fällen verwendet werden, in denen die Zieltypen einfach nicht von den entsprechenden Typen erben können (z. B. von ObservableObject). Sofern möglich, wird die Vererbung empfohlen, da dadurch die Größe der Binärdatei verringert wird, weil kein doppelter Code in der endgültigen Assembly erstellt wird.

Plattform-APIs: INotifyPropertyChanged, ObservableObject, ObservableRecipient

So werden sie verwendet

Die Verwendung eines dieser Attribute ist recht einfach: Sie fügen sie einfach einer partiellen Klasse hinzu, und der gesamte Code aus den entsprechenden Typen wird automatisch in diesem Typ generiert. Betrachten Sie beispielsweise Folgendes:

[INotifyPropertyChanged]
public partial class MyViewModel : SomeOtherType
{    
}

Dadurch wird eine vollständige INotifyPropertyChanged-Implementierung im Typ MyViewModel generiert, einschließlich zusätzlicher Hilfsprogramme (z. B. SetProperty), die verwendet werden können, um den Code weniger ausführlich zu gestalten. Es folgt eine kurze Zusammenfassung der verschiedenen Attribute:

  • INotifyPropertyChanged: Implementiert die Schnittstelle und fügt Hilfsmethoden zum Festlegen von Eigenschaften und Auslösen der Ereignisse hinzu.
  • ObservableObject: Fügt den gesamten Code aus dem Typ ObservableObject hinzu. Das ist konzeptuell gleichbedeutend mit INotifyPropertyChanged, wobei der Hauptunterschied darin besteht, dass auch INotifyPropertyChanging implementiert wird.
  • ObservableRecipient: Fügt den gesamten Code aus dem Typ ObservableRecipient hinzu. Dies kann insbesondere zu einem Typ hinzugefügt werden, der von ObservableValidator erbt, um die beiden Typen zu kombinieren.

Beispiele

  • Sehen Sie sich die Beispiel-App (für mehrere Benutzeroberflächen-Frameworks) an, um das MVVM-Toolkit in Aktion zu sehen.
  • Weitere Beispiele finden Sie auch in den Komponententests.