DataGrid控件可以根据DataTable自动生成行和列,但是如果列名包括一些特殊字符:’.’,’\’,’/’,’[‘,’]’,’(‘,’)’的时候,会出现无法显示出数据或者显示DataRowView的情况
原因是这些字符是Xaml里用来标识绑定path和xpath的符号
例如我们会这么用
[html] view plain copy
就是绑定到a的name属性上
所以当列名存在’.’的时候,就会把‘.’后面的当成‘.’前面的属性,于是就会显示不出来或者显示错了。
解决办法,DataGrid增加处理函数
[html] view plain copy
DataGrid_AutoGeneratingColumn“/>
[csharp] view plain copy
private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
string columnName = e.PropertyName;
if (e.Column is DataGridBoundColumn &&
(columnName.Contains(“.”) ||
columnName.Contains(“\”) ||
columnName.Contains(“/”) ||
columnName.Contains(“[“) ||
columnName.Contains(“]”) ||
columnName.Contains(“(“) ||
columnName.Contains(“)”)))
{
DataGridBoundColumn dataGridBoundColumn = e.Column as DataGridBoundColumn;
dataGridBoundColumn.Binding = new Binding(“[” + e.PropertyName + “]”);
}
}