public static Microsoft.Windows.Controls.DataGridColumn CreateDateColumn(string path, string header)
{
ExtendedDataGridTemplateColumn<Microsoft.Windows.Controls.DatePicker> gridTemplateColumn =
new ExtendedDataGridTemplateColumn<Microsoft.Windows.Controls.DatePicker>();
DataTemplate dataTemplate = new DataTemplate();
FrameworkElementFactory frameworkElementFactory =
new FrameworkElementFactory(typeof(Microsoft.Windows.Controls.DatePicker));
frameworkElementFactory.SetBinding(Microsoft.Windows.Controls.DatePicker.SelectedDateProperty, new Binding()
{
Path = new PropertyPath(path),
Mode = BindingMode.TwoWay,
UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
});
dataTemplate.VisualTree = frameworkElementFactory;
gridTemplateColumn.MinWidth = 100.0;
gridTemplateColumn.Width = 140.0;
gridTemplateColumn.Header = header;
gridTemplateColumn.CellEditingTemplate = dataTemplate;
gridTemplateColumn.CellTemplate = createDataTimeTextBolckCellTemplate(path);
return gridTemplateColumn;
}
private static DataTemplate createDataTimeTextBolckCellTemplate(string path)
{
DataTemplate dataTemplate = new DataTemplate();
FrameworkElementFactory frameworkElementFactory = new FrameworkElementFactory(typeof(TextBlock));
Binding binding = new Binding();
binding.Path = new PropertyPath(path);
binding.StringFormat = "yyyy-MM-dd";
binding.Mode = BindingMode.OneWay;
frameworkElementFactory.SetBinding(TextBlock.TextProperty, binding);
frameworkElementFactory.SetValue(FrameworkElement.VerticalAlignmentProperty, VerticalAlignment.Center);
frameworkElementFactory.SetValue(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Center);
dataTemplate.VisualTree = frameworkElementFactory;
return dataTemplate;
}