Reputation: 643
I have autogeneratedcolumns datagridgrid. This is my xml code for defining a datagrid:
<DataGrid AutoGenerateColumns="True" HorizontalAlignment="Stretch" Name="dataGrid1" VerticalAlignment="Stretch"
AutoGeneratingColumn="dataGrid1_AutoGeneratingColumn">
Now, I am scanning each column and if column type is equal to System.DateTime, I want to add a datepicker with selected value equal to the value in the cell:
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();
}
}
But when I do this I get this error:
Cannot implicitly convert type 'System.Windows.Controls.DatePicker' to 'System.Windows.Controls.DataGridColumn
'
Any ideas how to solve the problem?
Thanks in advanced.
Upvotes: 0
Views: 1274
Reputation:
You can have 2 DataTemplates as:
<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>
Then You can edit your column on check as like :
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;
}
}
Upvotes: 2