在WPF中,如何将datagrid列绑定到数据表的特定列?

And*_*rey 8 wpf datatable datagrid datacolumn

我有一个包含许多列的数据表,以及一个数据网格,我需要在其中只显示其中的一些列.我需要一个如何做的代码示例.我发现了一大堆的例子告诉我转的AutoGenerateColumns为true,并设置表作为DataContext的显示在我的数据表中的所有列.我猜然后我可以把在代码的网页来隐藏我并不需要,重新安排剩下的那些适当的顺序和大小,但肯定必须有一个更优雅的方式将所有列.

在设计师,我必须建立我想显示的列集合,我得到了确定年代,我怎么现有的DataGrid列绑定到我的代码中的特定数据表中的列?

Rac*_*hel 19

将DataTable绑定到DataGrid,将AutoGenerateColumns设置为False,然后将所需的任何列添加到DataGrid.Columns.下面是一个使用名为Collection的DataTable的示例,其中包含两列:ID和Value.

<DataGrid
    ItemsSource="{Binding Path=Collection}"
    AutoGenerateColumns=False
    >

    <DataGrid.Columns>
        <DataGridTextColumn Header="Id" Binding="{Binding Path=Id}" />
        <DataGridTextColumn Header="Value" Binding="{Binding Path=Value}" />
    </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)


And*_*rey 5

XAML绑定对我不起作用,因为my DataTable是在运行时生成的,因此在设计时没有任何要绑定的内容。无论如何,我偶然发现了如何做自己想要的事情。

我的问题是因为出于某种原因,当我设置ItemSource为表本身而不是表的值时DefaultView,不会引发任何错误,即使我稍后阅读该表时,该表未实现所需的接口。但是没有任何错误可以告诉我与众不同,我没有什么可继续寻找为什么我的网格显示为空的了。

DataGridName.DataContext = DataSetName.DataTableName;
DataGridName.ItemsSource = DataSetName.DataTableName.DefaultView;

((DataGridTextColumn)DataGridName.Columns[1]).Binding = new Binding("DataTableColumnName1");
((DataGridTextColumn)DataGridName.Columns[0]).Binding = new Binding("DataTableColumnName2");
((DataGridTextColumn)DataGridName.Columns[2]).Binding = new Binding("DataTableColumnName3");
Run Code Online (Sandbox Code Playgroud)