在后台直接创建每一列,并bind
在XMAL的WIndow中,定义一个x:Nam ="dataShow"的DataGrid控件
后台,在Load事件中,可以这样写
dataPage.dataShow.Columns.Clear();//每次清空列集合
string tempStr = String.Empty ;
for (int i = 0; i < 10; i++)
{
DataGridTextColumn textBoxColumn = new DataGridTextColumn();
textBoxColumn.Header =“列的名称”;
//定义每一列的宽度相同
textBoxColumn.Width = new DataGridLength(this.dataPage.dataShow.ActualWidth, DataGridLengthUnitType.Star);
textBoxColumn.MinWidth = 90;//定义每一列的最小宽度
Binding binding = new Binding();//设置每一列的binding
binding.Path = new PropertyPath(tempStr);
binding.Mode = BindingMode.OneWay;
textBoxColumn.Binding = binding;
dataPage.dataShow.Columns.Add(textBoxColumn);//将列添加到集合中
}
注意:设置完DataGrid的ItemSource后,一定要注意,binding的是ViewModel的各个属性,而不是成员变量。不然会报binding错误