2012-06-11 70 views
1

我們有許多實現INotifyPropertyChanged以允許WPF綁定更新的數據對象。還有一些地方我們的代碼訂閱了PropertyChanged,因爲我們對某些價值更新感興趣。我們自己的代碼應該訂閱PropertyChanged嗎?

這導致相當醜陋的代碼,我們需要檢查哪些屬性實際上改變(我們做到這一點使用表達式,所以它總是鍵入/重構安全)。

當我們想要訂閱它時掛鉤到特定事件(PriceChanged等等),還是掛鉤到PropertyChanged並檢查屬性名稱?

+2

撇開一下,如果你使用自己的事件,你總是可以添加一個'bool'來表示值是否實際發生了改變或者是否只是寫入。您也可以將事前和事後值作爲事件包的一部分提供。 –

回答

2

如果您要訂閱的許多屬性不是很大,我會創建專用事件,因爲它們在可讀性和可發現性方面都更好。

但是,如果有相當多的屬性,答案不是那麼明顯。我通常會嘗試通過應用Observer Synchronization模式(訂閱模型更改而不是ViewModel)來避免這種情況。它幫助我保持虛擬機輕薄。

相關問題