标题中带有下拉菜单的自定义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中显示组合框标题。
<DataGridTextColumn Binding="{Binding FirstName}">
<DataGridTextColumn.Header>
<ComboBox />
</DataGridTextColumn.Header>
</DataGridTextColumn>