2010-11-18 3 views
3

WPFToolkit의 DataGrid를 사용하여 일부 데이터를 표시합니다.WPF에서 DataTable과 DataGrid를 사용하는 경우 System.Windows.Data 오류가 발생합니다.

DataTable에 등등

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); 

및 myfile.xaml.cs으로 초기화된다.

으로 내가 myfile.xaml.cs에

myGrid.ItemsSource = myTable.DefaultView; 

를 사용하여 여기에 제안했다. 내가

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

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

이 GUI에서 그리드에 제대로을 추가 항목을 테이블에 항목을 추가 할 때 myfile.xaml에서

는 난 단지 그러나,

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

를 정의 다음 오류가 표시됩니다.

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') 

이 오류가 수정 되었습니까? 힌트가 있습니까?

감사합니다.

+0

FWIW에 항목을 추가하기 전에 데이터 테이블에 행을 추가 - 난 그냥 실행 코드 "된 직후을 3.5 "이고 오류없이 작동합니다. 어쩌면 당신은 부패 툴킷 dll을 가지고 있을까요? 또는? –

+0

알겠습니다. 감사합니다. 어쩌면 설정 문제 일 수도 있습니다. – Simon

답변

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"; 

예 : 당신이 행

+0

불행히도 주문을 변경해도 도움이되지 않았습니다. 그리고이 코드는 메인 (GUI) 스레드에 의해 호출되지 않기 때문에 Action 및 Dispatcher를 유지해야합니다. – Simon

+0

hmmm kein glück ... 나는 한번 살펴 보겠습니다. 그래도 질문이 있는데, 4.0 프레임 워크에 포함 된 툴킷이 아닌 툴킷의 DataGrid를 사용하는 이유는 무엇입니까? – David

+0

3.5에 고정 되었기 때문에 – Simon

관련 문제