标题中带有下拉菜单的自定义WPF DataGrid

本文关键字:自定义 WPF DataGrid 下拉菜单 标题 | 更新日期: 2023-09-27 17:58:07

我正在尝试创建一个在标题中有下拉菜单的DataGrid,但我不知道如何做到这一点。

DataGrid本身是从CSV文件中填充的,CSV文件可以有许多不同的格式,所以我不能在XAML中预先定义列,而是将它们设置为:

 //add headers as columns on the data grid
 var headerRow = _inputFile.GetHeaderRow();
 foreach (var hr in headerRow)
 {
      var textColumn = new DataGridTextColumn();
      textColumn.Header = hr;
      SourceGrid.Columns.Add(textColumn);
 }

我的目标是在标题列(或第一行,如果样式合适的话)中也有下拉菜单,因为我的想法是将输入CSV文件映射到一组预定义的输出,所以我希望用户通过下拉菜单选择每个输入文件标题映射到什么。

尝试在xaml中定义数据网格模板更好吗?或者,也许可以将我的输入数据排列到一个类结构中,这样可以更容易地以我想要的方式将数据绑定到网格?或者完全是别的什么?

我是WPF的新手,很难从这里找到前进的方向,所以即使是指向正确方向的指针也会很有帮助!


编辑:

var comboColumn = new DataGridComboBoxColumn();
comboColumn.Header = new ComboBox();
SourceGrid.Columns.Add(comboColumn);

所以我知道我可以在代码中将标题设置为文本或组合框,但有没有办法将文本和组合框放在同一列标题中?此外,我解决这个问题的方法是好的,还是应该考虑另一种控制?或者使用数据绑定而不是在代码中设置值?

标题中带有下拉菜单的自定义WPF DataGrid

下面的代码将帮助您在wpf中显示组合框标题。

<DataGridTextColumn Binding="{Binding FirstName}">
     <DataGridTextColumn.Header>
      <ComboBox />
     </DataGridTextColumn.Header>
    </DataGridTextColumn>