簡體   English   中英

所有屬性上的 INotifyPropertyChanged

[英]INotifyPropertyChanged on all properties

考慮到一個具有大量屬性的類,我想實現一個 Dirty 標志(為了知道我是否應該更新數據庫中的值)。

有沒有辦法在所有PropertyChanged上提高PropertyChanged ,而不必手動通過並在 setter 中提取它?

編輯以澄清一些事情:我確實瀏覽了此處鏈接的線程,並找到了一些東西,但不幸的是它們不適合我的需要。 我真的不需要發送事件,我只需要翻轉一個標志。 此外,該線程已經很老了,我希望可能在 C# 7 中出現一些可以幫助它的東西,我在更新日志中錯過了它。

為什么我不去手動做呢? 好吧,我可能不得不這樣做。 但是我必須聲明“隱藏”變量,自己管理代碼,我希望 MS 會做一些幫助,也許像其他主題中建議的那樣

公共類型名稱 {get; 放; 通知 { () => IsDirty = true; }}

這會很有幫助(忽略它會要求我聲明 get 和 set 的事實,因為它們是抽象的。

添加一個如下所示的方法:

public void Test()
{
     if(PropertyChanged != null)
         PropertyChanged(new PropertyChangedEventArgs(null));
}

傳遞 null 或空字符串作為屬性名稱告訴消費者所有屬性都已更改。

https://msdn.microsoft.com/en-us/library/system.componentmodel.propertychangedeventargs.propertyname(v=vs.110).aspx

你可以,但它也有很多工作。 創建一個屬性並在這些屬性上使用它。 在 ViewModel 的基類中,

這將實現 INotifyPropertyChanged,

您在其構造函數中注冊到 PropertyChanged 事件並通過反射檢查更改的屬性是否具有您的屬性,

然后相應地設置 IsDirty。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM