2009-11-03 35 views
1

我的List<BusinessObject>具有一些公共屬性,我想將它們綁定到DataGrid中的列。不幸的是,公共屬性的名稱並不好,我可能甚至不知道它們是什麼,直到運行時。出於這個原因,我設置了AutoGenerateColumns = True並且與每個DataGridAutoGeneratingColumnEvent進行交互,以便我可以檢查它是什麼,並且可以取消它,隱藏它或者將頭命名爲其他名稱。在Silverlight 3中使用Mode = TwoWay和AutogenerateColumns = True DataGrid

它的偉大工程,但我想不出如何設置模式=雙向讓我INotifyPropertyChanged的事件被觸發一次所有列生成,有人編輯的單元格。

獎勵問題: 在上下瀏覽網格的行時,網格的datacontext是否會自動設置該行的BusinessObject

回答

0

感謝this後,我瞭解到綁定發生在DataGridTextColumn上。因此要設置模式在運行時的方式是:

1 private void DataGrid1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) 
2 { 
3  DataGridTextColumn tc = (DataGridTextColumn)e.Column; 
4  tc.Header = "Custom Header"; 
5  tc.Binding.Mode = BindingMode.TwoWay; 
6 } 

現在,我有雙向綁定,我必須弄清楚如何改變使其恢復到我的BusinessObject的。

0

如果綁定正確,您的業務對象將自動接收所需的更新。要以編程方式進行綁定,您可能需要多一點代碼,例如:

... 
Binding binding = new Binding("Propertyname"); 
tc.binding.Mode = BindingMode.TwoWay; 
... 
相關問題