WPFでPrizmなしでsetpropertyを実装する

SetProperty メソッドは通常、プロパティの変更通知を簡素化するために使用されます。Prism の SetProperty メソッドは INotifyPropertyChanged インターフェイスを実装しているプロパティの変更を通知し、ViewModel においてよく使用されます。Prism を使用しない場合でも、同様の機能を実装することが可能です。以下のように自作の SetProperty メソッドを作成できます。

手順

  1. INotifyPropertyChanged インターフェイスを実装する。
  2. 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 メソッドを実装し、プロパティ変更通知を行うことができます。

コメント

タイトルとURLをコピーしました