2012-01-19 89 views
0

假設我有一個ListBox,它綁定到我的視圖模型上的可觀察集合,其中數據項是一個簡單的類,它具有NameValue屬性。Silverlight:無法通過INPC強制更新綁定到集合?

當我添加或刪除視圖模型集合項,列表框會自動更新爲我所期望的。但是,如果我更改數據項的名稱,我還希望ListBox也會刷新,因此在更新代碼中的名稱後,我提出了視圖模型屬性的屬性更改,該屬性公開可觀察集合。但是ListBox不會更新。

就好像綁定在說,好,你給我(集合本身)的對象是一樣的最後一個過來人,所以並沒有什麼變化,有嗎?愚蠢的程序員,告訴我刷新時,我不需要!

只有一對夫婦的方式我已經找到了解決此問題:

  • 提高從集合本身就是一個明確的復位通知(需要的ObservableCollection的子類來做到這一點)
  • 重新創建列表採用了全新的觀察集合,然後提高性能的變化 - 收集對象現在是不同的,所以綁定更新

這些都不兩種方式是理想的,雖然第一種方法是絕對理想 - 我真的不應該很難得到一個列表框來更新!

任何人都可以解釋爲什麼綁定工作,這樣一來,如果有什麼辦法去改變,這樣的結合會一直在屬性更改通知更新,無論來源是否有變化?

回答

1

這聽起來好像在您ObservableCollection沒有實現INotifyPropertyChanged的項目。你需要做的這一點,所以,當你改變一個項目的Name財產集合中,用戶界面被更新。從你的描述來看,框架和綁定的集合完全按照應該的方式工作。

+0

啊,當然 - 我認爲這將是一些簡單。 – Sam