首頁 > 後端開發 > C++ > C#中如何在屬性值變化時觸發事件?

C#中如何在屬性值變化時觸發事件?

Patricia Arquette
發布: 2024-12-30 13:33:10
原創
898 人瀏覽過

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

如何引發屬性值變化事件

問題描述:

您想要想要特定屬性(例如ImageFullPath1)的值發生變更時觸發事件。雖然 INotifyPropertyChanged 是一種已知的解決方案,但您喜歡基於事件的方法。

答案:

要使用事件實現屬性變更通知,請利用INotifyPropertyChanged 介面:

public class MyClass : INotifyPropertyChanged
{
    // ...
}
登入後複製

INotifyChanged 介面:

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

protected void OnPropertyChanged(string propertyName)
{
    OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
登入後複製

INotifyChanged 介面定義了一個事件,Changed消費者可以訂閱。若要觸發此事件,請實作OnPropertyChanged 方法:

public string ImageFullPath1
{
    get { ... }
    set
    {
        if (value != ImageFullPath1)
        {
            ImageFullPath1 = value;
            OnPropertyChanged(nameof(ImageFullPath1));
        }
    }
}
登入後複製

對於ImageFullPath1 屬性,如下所示更新設定器:

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

public event EventHandler ImageFullPath1Changed;
登入後複製

或者,對於特定屬性,您可以建立其他事件:

在屬性設定器中,加入OnPropertyChanged 之後的OnImageFullPath1Changed(EventArgs.Empty)。

使用 .NET 4.5 改進的程式碼:

protected void OnPropertyChanged(
    [System.Runtime.CompilerServices.CallerMemberName] string propertyName = "")
{
    OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
登入後複製
使用 .NET 4.5,您可以使用 CallerMemberNameAttribute 進行更簡潔的實作:

以上是C#中如何在屬性值變化時觸發事件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板