我的List<BusinessObject>
有一些公共属性,我想绑定到DataGrid中的列。不幸的是,公共属性的名称并不好,我甚至可能不知道它们是什么,直到运行时。出于这个原因,我设置 AutoGenerateColumns = True 并拦截每个DataGridAutoGeneratingColumnEvent,这样我就可以检查它是什么,取消它,隐藏它,或者将标题命名为其他内容。
它运行良好,但我无法弄清楚如何设置 Mode = TwoWay ,以便在生成所有列并且有人编辑单元格后触发我的INotifyPropertyChanged事件。
奖金问题:
在向上和向下导航网格的行时,网格的datacontext是否会自动设置为该行的BusinessObject
?
答案 0 :(得分: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 }
现在我有了TwoWay绑定,我必须弄清楚更改如何将它重新发送回我的BusinessObject。
答案 1 :(得分:0)
如果绑定正确,您的业务对象将自动收到所需的更新。要以编程方式进行绑定,您可能需要更多代码,例如:
...
Binding binding = new Binding("Propertyname");
tc.binding.Mode = BindingMode.TwoWay;
...