如果绑定到的数据表有一个项目列表,如何在数据网格中显示组合框

本文关键字:数据网 数据 网格 组合 显示 绑定 数据表 有一个 列表 项目 如果 | 更新日期: 2023-09-27 17:49:24

我有一个数据集。我不知道集合的内容。我只需要在DataGrid中显示集合的表。我可以使用下面的代码来做到这一点。只是为了能够使用它,我已经创建了自己的数据集。CustomerDataProvider是我创建的类,它有一个返回虚拟数据集的方法。

CustomerDataProvider provider = new CustomerDataProvider();
DataSet ds = new DataSet();
DataTable table = new DataTable();
DataView view = new DataView();

    public MainWindow()
    {
        InitializeComponent();
        ds = dataset.GetDataSet();
        table = ds.Tables[0];
        view = table.AsDataView();
        this.DataContext = view;
    }

<Grid>
    <DataGrid x:Name="dynamicGrid" ItemsSource="{Binding Path=., Mode=TwoWay}" ColumnWidth="*"  />
</Grid>

现在,如果DataTable包含bool值,DataGrid将自动显示一个CheckBox。如果DataTable包含项目列表,我希望能够自动显示ComboBox。我该怎么做呢?

如果绑定到的数据表有一个项目列表,如何在数据网格中显示组合框

设置AutoGenerateColumns为false,而不是自动生成列,您可以定义列并与DataTable的不同字段绑定。你可以取DataGridTemplateColumn并提供CellTemplate。参见下面的参考代码:

  <DataGrid AutoGenerateColumns="False">
    <DataGridTemplateColumn>
      <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
          <ComboBox />
        </DataTemplate>
      </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
  </DataGrid>