【问题标题】:Customised WPF DataGrid with dropdown menus in header在标题中带有下拉菜单的自定义 WPF DataGrid
【发布时间】:2013-02-07 16:14:51
【问题描述】:

我正在尝试创建一个在标题中有下拉菜单的 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);

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

【问题讨论】:

  • 你弄明白了吗?我试图实现同样的事情,目前正在努力绑定组合框选择
  • @RyanS 恐怕不是。如果您想出解决方案,请在此处发布,以便其他人看到:)
  • 我在标题中找到了组合框,但找不到一种优雅的方式来绑定动态数量的组合框。我最终找到了一种替代方法来完成我所需要的

标签: c# wpf data-binding datagrid wpfdatagrid


【解决方案1】:

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

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

【讨论】:

  • 我必须在代码中设置标题,因为我用于定义这些标题的 CSV 文件的自定义格式。除了代码之外,我如何才能实现您的 XAML 的功能?
  • @peacemaker 以下是您在代码中的操作方式:myDataGrid.Columns.Add(new DataGridTextColumn {Header = new ComboBox(), Binding = myBinding});
  • 使用 Eirik 建议的解决方案。它将帮助您解决问题。
猜你喜欢
  • 1970-01-01
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多