INotifyPropertyChanged 属性

INotifyPropertyChanged 型は、MVVM サポート コードを既存の型に挿入できるようにする属性です。 その目的は、他の関連属性 (ObservableObject および ObservableRecipient) とともに、これらの型の同じ機能が必要であるが、ターゲットの型が既に別の型から実装されている場合に開発者をサポートすることです。 C# では多重継承が許可されていないため、代わりにこれらの属性を使用すると、MVVM Toolkit ジェネレーターに同じコードをこれらの型に直接追加させ、この制限を回避できます。

Note

注釈付き型が機能するためには、部分クラス内にある必要があります。 型が入れ子になっている場合は、宣言構文ツリー内のすべての型にも部分として注釈を付ける必要があります。 そうしないとコンパイル エラーが発生します。ジェネレーターは、要求された追加コードを使用してその型の別の部分宣言を生成できないためです。

Note

これらの属性は、ターゲット型が同等の型 (たとえば、ObservableObject から) を継承できない場合にのみ使用されることを意図しています。 可能な場合は、継承することをお勧めします。これにより、最終的なアセンブリに重複するコードが作成されることが回避され、バイナリ サイズが削減されます。

プラットフォーム API:INotifyPropertyChangedObservableObjectObservableRecipient

使用方法

これらの属性の使用は非常に簡単です。部分クラスに追加するだけで、対応する型のすべてのコードがその型に自動的に生成されます。 たとえば、次を考えてみましょう。

[INotifyPropertyChanged]
public partial class MyViewModel : SomeOtherType
{    
}

これにより、MyViewModel 型への完全な INotifyPropertyChanged 実装が生成され、詳細を減らすために使用できる追加のヘルパー (SetProperty など) が完成します。 さまざまな属性の簡単な概要を次に示します。

  • INotifyPropertyChanged: インターフェイスを実装し、プロパティを設定してイベントを発生させるためのヘルパー メソッドを追加します。
  • ObservableObject: ObservableObject 型からすべてのコードを追加します。 概念的には INotifyPropertyChanged と同等であり、主な違いは INotifyPropertyChanging も実装していることです。
  • ObservableRecipient: ObservableRecipient 型からすべてのコードを追加します。 特に、これを ObservableValidator から継承する型に追加して、2 つを組み合わせることができます。

  • サンプル アプリ (複数の UI フレームワーク向け) を確認して、MVVM Toolkit の実際の動作を確認してください。
  • 単体テストで、その他の例を確認することもできます。