Datagridtextcolumn绑定到datatable

时间:2011-10-28 05:41:26

标签: c# wpf

当我有数据表并且我想将datagrid中的每个datagridtextcolumn绑定到数据表中的每一列时,我遇到了一些问题。

我的代码如下

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

}

因此在我的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>

在我的代码方面,ds是一个有一个数据表的数据集。每行是对应于头帧尾和id的分组4列。我想首先正确绑定id。但是id号不能显示在数据网格上。

dgrid.DataContext = ds.Tables[0];

如果我不在xaml端使用datagridtextcolumn,它实际上会显示正确的数据。但我想要的是在xaml端对数据表进行绑定。

2 个答案:

答案 0 :(得分:0)

试试这个

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

答案 1 :(得分:0)

如果您的案例中有Packet这样的模型类,那么我建议使用可观察集合而不是DataTable来保存Packets列表。 DataTable项的类型为DataRowView

我甚至不确定你的DataTable如何举行Packet个实例?

如果你的Packet类型的ds.Tables [0] .Rows [0]或者ds.Tables [0] .Rows [0] [0] 属于{{1输入?

如果是这样会导致很多绑定麻烦。