【发布时间】:2014-01-06 14:35:58
【问题描述】:
我有一个绑定到 DataTable.DefaultView 的 DataGrid,它使用自动生成列来呈现网格。那部分工作正常。但是,对于某些列,我想使用自定义模板。问题是每次加载时表中的列都会发生变化,因此解决方案需要通用。
我可以按照here 的描述挂钩到 AutoGeneratingColumn 事件,但在定义模板绑定时仍然存在问题:
<UserControl.Resources>
<DataTemplate x:Key="customCellTemplate">
<TextBlock Text="{Binding ???"></TextBlock>
</DataTemplate>
</UserControl.Resources>
(...)
<DataGrid ItemsSource="{Binding DefaultView}" AutoGeneratingColumn="DataGrid_AutoGeneratingColumn">
</DataGrid>
还有我的代码:
private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
string colName = e.PropertyName;
if (someCondition)
{
var templateColumn = new DataGridTemplateColumn();
templateColumn.Header = colName;
templateColumn.CellTemplate = (DataTemplate)Resources["customCellTemplate"];
templateColumn.SortMemberPath = colName;
e.Column = templateColumn;
}
如您所见,我不知道如何在列模板中定义绑定,因为列名发生了变化。
编辑:
除了接受的答案 - 有时更容易以编程方式创建整个模板,如下所述: http://fczaja.blogspot.com/2013/12/wpf-datagrid-custom-template-for.html
【问题讨论】:
标签: c# wpf xaml data-binding datagrid