在WPF System.Windows.Data中使用DataTable和DataGrid时出现错误

时间:2010-11-18 15:09:36

标签: c# wpf .net-3.5 c#-3.0 wpftoolkit

我使用WPFToolkit的DataGrid来显示一些数据。

DataTable在myfile.xaml.cs中用

初始化
myTable = new DataTable();
DataColumn col;
col = new DataColumn();
col.DataType = System.Type.GetType("System.Int64");
col.ColumnName = "ID";
col.ReadOnly = true;
col.Unique = false;
myTable.Columns.Add(col);

col = new DataColumn();
col.DataType = System.Type.GetType("System.String");
col.ColumnName = "Name";
col.ReadOnly = true;
col.Unique = false;
myTable.Columns.Add(col);

等等。

正如我所建议的那样,我使用

myGrid.ItemsSource = myTable.DefaultView;

在myfile.xaml.cs中。

在myfile.xaml中我只定义了

<my:DataGrid Name="myGrid" xmlns:my="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"/>

当我使用

向表格添加条目时
DataRow row = myTable.NewRow();
row["ID"] = 123;
row["Name"] = "MyName";

Action action = () => myTable.Rows.Add(row);
Dispatcher.Invoke(action);

将条目正确添加到GUI中的网格,但是我收到以下错误:

System.Windows.Data Error: 39 : BindingExpression path error: 'ID' property not found on 'object' ''Object' (HashCode=29890231)'. BindingExpression:Path=ID; DataItem='Object' (HashCode=29890231); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
System.Windows.Data Error: 39 : BindingExpression path error: 'Name' property not found on 'object' ''Object' (HashCode=29890231)'. BindingExpression:Path=Name; DataItem='Object' (HashCode=29890231); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')

那么如何修复此错误? 任何提示?

谢谢。

1 个答案:

答案 0 :(得分:0)

我认为这与您执行代码的顺序有关。尝试更改此内容:

DataRow row = myTable.NewRow();
row["ID"] = 123;
row["Name"] = "MyName";

Action action = () => myTable.Rows.Add(row);
Dispatcher.Invoke(action);

进入这个:

DataRow row = myTable.NewRow();
myTable.Rows.Add(row);
row["ID"] = 123;
row["Name"] = "MyName";

即。 :在将项添加到行

之前,将行添加到dataTable