ホームページ >バックエンド開発 >C++ >C# でプロパティ値が変更されたときにイベントをトリガーするにはどうすればよいですか?

C# でプロパティ値が変更されたときにイベントをトリガーするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-30 13:33:10894ブラウズ

How to Trigger an Event When a Property Value Changes in C#?

プロパティ値の変更時にイベントを発生させる方法

問題の説明:

ImageFullPath1 などの特定のプロパティの値が変更されるたびにイベントをトリガーします。 INotifyPropertyChanged は既知のソリューションですが、イベント ベースのアプローチをお勧めします。

回答:

イベントを使用してプロパティ変更通知を実装するには、INotifyPropertyChanged インターフェイスを利用します。

public class MyClass : INotifyPropertyChanged
{
    // ...
}

INotifyPropertyChanged インターフェイスは PropertyChanged イベントを定義します消費者が購読できるもの。このイベントをトリガーするには、OnPropertyChanged メソッドを実装します。

protected void OnPropertyChanged(PropertyChangedEventArgs e)
{
    // ...
}

protected void OnPropertyChanged(string propertyName)
{
    OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}

ImageFullPath1 プロパティの場合、次のようにセッターを更新します。

public string ImageFullPath1
{
    get { ... }
    set
    {
        if (value != ImageFullPath1)
        {
            ImageFullPath1 = value;
            OnPropertyChanged(nameof(ImageFullPath1));
        }
    }
}

または、特定のプロパティに対して追加のイベントを作成できます。 :

protected void OnImageFullPath1Changed(EventArgs e)
{
    // ...
}

public event EventHandler ImageFullPath1Changed;

プロパティ セッターに次のように追加します。 OnPropertyChanged.

後の OnImageFullPath1Changed(EventArgs.Empty) .NET 4.5 で改善されたコード:

.NET 4.5 では、より簡潔な実装のために CallerMemberNameAttribute を使用できます。

protected void OnPropertyChanged(
    [System.Runtime.CompilerServices.CallerMemberName] string propertyName = "")
{
    OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}

以上がC# でプロパティ値が変更されたときにイベントをトリガーするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。