2010-11-10 98 views
1

我的WPF應用程序顯示具有某些屬性的對象樹。這些屬性可以通過數據綁定從UI進行修改。對象本身可以添加或刪除。沒什麼特別的。跟蹤對象樹中的修改

現在的問題是:什麼是最好的方式來了解對象樹中某處的變化?

想法至今認爲:

  • 創建一個靜態方法來通過每個對象被調用時,它被修改
  • 中的每個對象類型創建靜態事件,並聽取其
  • 上實現INotifyPropertyChanged每個對象,並讓他們都通知他們的父母有關修改,所以我可以聽對象樹目錄上的一個事件
  • 收聽來自控件的事件,如TextChanged,Checked

他們都看起來像醜陋的網格,所以我害怕執行任何他們。

+0

我不明白爲什麼這個問題需要「算法」標籤。 – MAK 2010-11-10 16:42:50

+0

答案可能真的很一般。可能有其他語言/框架中使用的常見做法。 – 2010-11-11 09:36:00

回答

0

如果comeone會有興趣,我最終將樹中的所有對象都從共同祖先繼承到樹中,這個共同祖先負責跟蹤IsDirty狀態並在對象樹中向上和向下推進它。我的意思是,如果某個對象被標記爲那麼它的所有父母都被認爲是髒。是的,我在這個普通的超類中實現了INotifyPropertyChanged以瞭解這些變化。

2

INotifyPropertyChanged可能是最好的方法,因爲它可以讓您從任何根節點冒出更改通知。我想這也取決於你的類型有多複雜,以及你想要做出什麼樣的改變?

+0

我只想知道是否有任何更改。只需啓用「保存」按鈕。任何屬性更改或對象添加/刪除均視爲更改。 – 2010-11-12 10:11:43