我有ObservableCollection類型的兩個屬性(在單獨的項目中);我想要做的就是使用反射和SetBinding像這樣綁定這兩個 - 然後綁定兩個可觀察集合
//Get the PropertyDescriptor for first collection property
PropertyDescriptor relatedPropertyDesc = prop.Find(firstCollPropName, false);
Binding relatedPropBinding = new Binding(relatedPropertyDesc.Name);
relatedPropBinding.Source = this.SelectedItem;
relatedPropBinding.Mode = BindingMode.TwoWay;
//Bind the second collection property using binding created above
propItem.SetBinding(MyItem.SecondCollProperty, relatedPropBinding);
這SecondCollProperty被綁定到一個組合框的的ItemsSource。
因爲這樣可以正常工作,所以firstCollProperty中的值在ComboBox中正確顯示;但如果在運行時在firstCollProperty中進行了一些更改,則那麼它們不會反映在ComboBox中!(添加新項目或創建新的集合對象)。
更新在刷新綁定(再次執行上面的代碼)後正確反映。
我的問題是 - 如果兩個ObservableCollections綁定在一起,爲什麼在第一個任何更改不會反映在其他?但同樣的東西適用於字符串或雙重類型的屬性。
有沒有辦法達到這個目的?
任何想法?讓我知道如果我的問題不清楚或沒有意義? – akjoshi 2010-11-11 11:08:02
你的問題有點奇怪,因爲我看不到任何理由綁定兩個集合。爲什麼不在這兩個地方使用同一個系列? – robertos 2010-11-12 09:44:36
@robertos:謝謝你的提問,我的場景由一個屬性網格(PG)和一個設計器(單獨的項目)組成,在設計器中我有一個對象,其屬性需要在PG中顯示;該對象的一個(或多個)屬性是集合類型的,PG將通過反射來獲取並將其綁定到集合類型的本地屬性(存在於特定屬性Item中)。由於PG只是具有此屬性的名稱(可能會有所不同),因此它需要另一個集合類型的本地屬性以用於綁定目的。 – akjoshi 2010-11-12 11:50:08