2

我正在尝试创建一个在标题中有下拉菜单的 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 相当陌生,并且很难找到从这里去的地方,所以即使是正确方向的指针也会非常有帮助!


编辑:

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

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

4

1 回答 1

1

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

<DataGridTextColumn Binding="{Binding FirstName}">
     <DataGridTextColumn.Header>
      <ComboBox />
     </DataGridTextColumn.Header>
    </DataGridTextColumn>
于 2013-02-07T16:32:11.423 回答