我具有autogeneratedColumns datagridgrid。这是我的XML代码,用于定义数据杂志:
<DataGrid AutoGenerateColumns="True" HorizontalAlignment="Stretch" Name="dataGrid1" VerticalAlignment="Stretch"
AutoGeneratingColumn="dataGrid1_AutoGeneratingColumn">
现在,我正在扫描每一列,如果列类型等于系统。DateTime,我想添加一个datepicker,其中所选值等于单元格中的值:
private void dataGrid1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
// Modify the header of the Name column.
if (e.PropertyType.ToString() == "System.DateTime")
{
e.Column = new System.Windows.Controls.DatePicker();
}
}
但是,当我这样做时,我会得到这个错误: Cannot implicitly convert type 'System.Windows.Controls.DatePicker' to 'System.Windows.Controls.DataGridColumn
'有什么想法解决问题吗?感谢高级。
您可以有2个数据档案为:
<DataTemplate x:Key="dueDateCellTemplate">
<TextBlock
Text="{Binding DueDate}"
Margin="5,4,5,4" />
</DataTemplate>
<DataTemplate x:Key="dueDateCellEditingTemplate">
<sdk:DatePicker
SelectedDate="{Binding DueDate, Mode=TwoWay}" />
</DataTemplate>
然后,您可以在检查中编辑列:
private void dataGrid1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyName == "System.DateTime")
{
// Create a new template column.
DataGridTemplateColumn templateColumn = new DataGridTemplateColumn();
templateColumn.CellTemplate = (DataTemplate)Resources["dueDateCellTemplate"];
templateColumn.CellEditingTemplate = (DataTemplate)Resources["dueDateCellEditingTemplate"];
e.Column = templateColumn;
}
}