自定义WPF DataGrid,标题中包含下拉菜单

时间:2013-02-07 16:14:52

标签: 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 DataGridTextColumn();
      textColumn.Header = hr;
      SourceGrid.Columns.Add(textColumn);
 }

我的目标是在标题列中设置下拉菜单(如果设计合适,也可以设置第一行),因为我的意思是将输入CSV文件映射到一组预定义的输出,所以我希望用户通过下拉菜单选择每个输入文件标题的内容。

尝试在xaml中定义数据网格模板是否更好?或者可能将我的输入数据排列成一个类结构,这个类结构将以我想要的方式更容易地数据绑定到网格中?或完全不同的东西?

我对WPF很新,并且无法找到从这里开始的地方,所以即使是正确方向的指针也会非常有用!


编辑:

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

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

1 个答案:

答案 0 :(得分:1)

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

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