C# 标题中带有下拉菜单的自定义WPF数据网格

C# 标题中带有下拉菜单的自定义WPF数据网格,c#,wpf,data-binding,datagrid,wpfdatagrid,C#,Wpf,Data Binding,Datagrid,Wpfdatagrid,我正在尝试创建一个DataGrid,它的标题中有下拉菜单,我不知道如何去做 DataGrid本身由一个CSV文件填充,该文件可以有多种不同的格式,因此我不能在XAML中预先定义列,而是将它们设置为: //add headers as columns on the data grid var headerRow = _inputFile.GetHeaderRow(); foreach (var hr in headerRow) { var textColumn = new Da

我正在尝试创建一个DataGrid,它的标题中有下拉菜单,我不知道如何去做

DataGrid本身由一个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的新手,很难从这里找到方向,所以即使是正确方向的指针也会非常有用


编辑:

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

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

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


我必须在代码中设置标题,因为我用于定义这些标题的CSV文件的自定义格式。我如何才能实现XAML在代码中的功能?@peacemaker以下是您在代码中的实现方式:myDataGrid.Columns.Add(new DataGridTextColumn{Header=new ComboBox(),Binding=myBinding});使用Eirik建议的解决方案。这会帮你解决问题。你弄明白了吗?我正在尝试实现同样的事情,目前正在努力绑定comboboxselections@RyanS恐怕不行。如果你想出了一个解决方案,请把它贴在这里,这样其他人就可以看到:)我在标题中找到了组合框,但找不到一个优雅的方法来绑定动态数量的组合框。我最终找到了另一种方法来完成我所需要的
<DataGridTextColumn Binding="{Binding FirstName}">
     <DataGridTextColumn.Header>
      <ComboBox />
     </DataGridTextColumn.Header>
    </DataGridTextColumn>