2011-10-28 7 views
0

데이터 테이블을 가질 때 데이터 테이블의 각 열에 DataGrid의 각 DataGridtextColumn을 바인딩하려고하는데 문제가 있습니다.Datagridtextcolumn 데이터 테이블에 바인딩

내 코드 내 XAML 측

<Grid > 
    <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Path=.}" Name="dgrid" SelectionChanged="dgrid_SelectionChanged"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="ID" Binding="{Binding Path=id}"/> 
     </DataGrid.Columns> 

    </DataGrid> 
</Grid> 

그리고 내 측면 코드에 따라서

public class Packet 
{ 
    public Header header { get; set; } 
    public Frame frame { get; set; } 
    public Tail tail { get; set; } 
    public String id { get; set; } 

    public Packet(String id,Header header, Frame frame, Tail tail) 
    { 
     this.id = id; 
     this.header = header; 
     this.frame = frame; 
     this.tail = tail; 
    } 

} 

아래와 같다 DS는 하나의 데이터 테이블을 갖는 데이터 집합이다. 각 행은 헤더 프레임 테일과 ID에 해당하는 4 열의 패킷입니다. ID를 올바르게 바인딩하려고합니다. 그러나 ID 번호는 데이터 그릿에 표시 할 수 없습니다.

xaml 쪽에서 datagridtextcolumn을 사용하지 않으면 실제로 올바른 데이터가 표시됩니다. 하지만 내가 원했던 것은 datatable에 대한 xaml 쪽 바인딩을 수행하는 것입니다. 당신이 경우에 Packet 같은 모델 클래스가있는 경우

+0

아무 문제가없는 것 같습니다. 디버그 창에서 바인딩에 대한 첫 번째 예외를 볼 수 있습니까? 또는'ds.Tables [0]'인스턴스가 올바르게 초기화되었는지 확인 했습니까? –

+0

@edelweiss DataGrid의 바인딩을 제거한 다음 코드에서 수행하십시오. –

+0

@jwJung 내가 그것을 실행할 때, 나는 출력 창에서 이것을 보았다. System.Windows.Data 오류 : 40 : BindingExpression 경로 오류 : 'id'속성이 'object' ''DataRowView '(HashCode = 8381127)'에 없습니다. ' BindingExpression : Path = id; DataItem = 'DataRowView'(HashCode = 8381127); 대상 요소는 'TextBlock'입니다 (Name = ''); target 속성은 'Text'('String'유형)입니다. 그 말이 맞지 않았 음을 의미합니까? – edelweiss

답변

0

는 내가 Packets의 목록을 유지하는 대신 DataTable의 관찰 모음을 사용하는 제안이

<Grid > 
     <DataGrid AutoGenerateColumns="False" Name="dgrid" SelectionChanged="dgrid_SelectionChanged"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="ID" Binding="{Binding Path=id}"/> 
      </DataGrid.Columns> 
     </DataGrid> 
    </Grid> 

    dgrid.ItemsSource = ds.Tables[0].AsDataView(); 
0

을보십시오. DataTable 님의 아이템은 DataRowView입니다.

DataTable님께 서 Packet 사례를 어떻게 들고 계신 지 잘 모르십니까?

당신의 ds.Tables [0] .Rows [0] Packet 유형 또는 ds.Tables의 [0] .Rows [0] [0]Packet 유형 인 경우?

그렇다면 바인딩에 많은 문제가 발생할 수 있습니다.

관련 문제