如何引發屬性值變化事件
問題描述:
您想要想要特定屬性(例如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)); }
以上是C#中如何在屬性值變化時觸發事件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!