我正在努力使用Wpf DataGrid
。其ItemsSource
是DataTable
,其中由类型单元格Tuple<int, string>
以下是一些关于如何创建DataTable
。
// Create columns
for (int j = 0; j < maxCount; j++) {
dt.Columns.Add(selectedTests[i].Name + " " + (j + 1).ToString(), typeof(Tuple<int, string>));
}
// Create rows
for (int k = 0; k < tuple.Item2.Count; k++) {
var newRow = dt.NewRow();
dt.Rows.Add(newRow);
}
...
dt.Rows[k][i + m] = new Tuple<int, string>(n, str);
然后我将此DataTable
设置为DataGrid
,我想只显示元组中的属性Item2
,此时我需要保留元组实例。并且无法定义我的列以设置displaymemberPath
,因为它是自动生成的。
<DataGrid x:Name="dataGrid" LoadingRow="dataGrid_LoadingRow_1" ItemsSource="{Binding DataTable}" DisplayMemberPath="{Binding Item2}">
我的datagrid一直转换为字符串我的元组:
答案 0 :(得分:0)
正如question所述,您可以设置与代码隐藏的绑定。
因此,您可以订阅yourgrid_AutoGeneratingColumn
事件并执行此操作:
(e.Column as DataGridTextColumn).Binding = new Binding("Title");
当然您应该通过某些解决方案将ColumnName
传递给AutoGeneratingColumn
事件......
答案 1 :(得分:-1)
您只需手动设置列并将其绑定到Item2列。
<DataGrid ItemsSource="{Binding DataTablePropertyInYourDataContext}">
<DataGrid.Columns>
<DataGridTextColumn
Header="Item2"
Binding="{Binding ColumnNameInYourDataTable}"
/>
</DataGrid.Columns>
</DataGrid>
或其他解决方法:您可以订阅AutoGeneratingColumn事件,当不需要列等于true时设置取消。在MSDN
上查看此内容希望有所帮助