SetProperty メソッドは通常、プロパティの変更通知を簡素化するために使用されます。Prism の SetProperty メソッドは INotifyPropertyChanged インターフェイスを実装しているプロパティの変更を通知し、ViewModel においてよく使用されます。Prism を使用しない場合でも、同様の機能を実装することが可能です。以下のように自作の SetProperty メソッドを作成できます。
手順
INotifyPropertyChangedインターフェイスを実装する。SetPropertyメソッドを定義して、プロパティの変更時に通知を発行する。
実装例
以下のように ViewModelBase クラスを作成し、SetProperty メソッドを含めます。
using System.ComponentModel;
using System.Runtime.CompilerServices;
public class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)
{
if (Equals(storage, value))
return false;
storage = value;
OnPropertyChanged(propertyName);
return true;
}
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
使い方
SetProperty メソッドはプロパティの setter で呼び出されます。
public class SampleViewModel : ViewModelBase
{
private string _name;
public string Name
{
get => _name;
set => SetProperty(ref _name, value);
}
}
この方法で、Prism を使用せずに SetProperty メソッドを実装し、プロパティ変更通知を行うことができます。


コメント