WPF数据表绑定和列显示

18

我有一个DataTable作为DataGrid的项源,这个DataTable有很多列。是否可以仅显示几列而不是全部列,而无需创建新表?

3个回答

27

是的,它是可以的。只需要标记AutoGenerateColumns=False并手动定义列。您可以使用正常的文本绑定列、复选框列、自定义XAML模板列等等,如您在文档中所见。

<DataGrid ItemsSource="{Binding DataSource}" AutoGenerateColumns="False" >
    <DataGrid.Columns>
    <DataGridTextColumn Header="Simple Value"
                      Binding="{Binding SimpleValue}" Width="*" />
     <DataGridTemplateColumn Width="*" Header="Complex Value">
        <DataGridTemplateColumn.CellTemplate>
          <DataTemplate>
            <StackPanel>
               <TextBox Text="{Binding ComplexValue}"/>
               <TextBox Text="{Binding ComplexValue2}"/>
            </StackPanel>
          </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
      </DataGridTemplateColumn>
    </DataGrid.Columns>
  </DataGrid>

7

6

非常同意。如果你的表结构和列名保持不变,那么在Datagrid XAML中设置AutoGenerateColums = False,并手动创建所有列。

<dg:DataGrid Name="mydg" ItemsSource="{Binding Data}" AutoGenerateColumns="False">
 <dg:DataGrid.Columns>
  <dg:DataGridTextColumn Header="Col 0" Binding="{Binding FirstColumnName}" />
  <dg:DataGridTextColumn Header="Col 1" Binding="{Binding SecondColumnName}" />
 </dg:DataGrid.Columns>
</dg:DataGrid>

然后在代码后端简单地提供源代码,例如:
mydg.ItemSource = Data.DefaultView;

现在,当您的DataTable包含列 FirstColumnName SecondColumnName 时,它们将被数据绑定到Datagrid。


1
为什么会有 dg: 前缀?这是必须的吗? - Allan Ruin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接