在Silverlight 3 DataGrid中使用Mode = TwoWay和AutogenerateColumns = True

时间:2009-11-03 20:36:32

标签: silverlight-3.0 datagrid binding autogeneratecolumn

我的List<BusinessObject>有一些公共属性,我想绑定到DataGrid中的列。不幸的是,公共属性的名称并不好,我甚至可能不知道它们是什么,直到运行时。出于这个原因,我设置 AutoGenerateColumns = True 并拦截每个DataGridAutoGeneratingColumnEvent,这样我就可以检查它是什么,取消它,隐藏它,或者将标题命名为其他内容。

它运行良好,但我无法弄清楚如何设置 Mode = TwoWay ,以便在生成所有列并且有人编辑单元格后触发我的INotifyPropertyChanged事件。

奖金问题: 在向上和向下导航网格的行时,网格的datacontext是否会自动设置为该行的BusinessObject

2 个答案:

答案 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;
...