Вытягиваю данные в DataGrid получается так:
Как видно, 2й и 3й столбцы типа DataTime. Вопрос: как вместо такого (текстового) отображения поставить datePicker (т е получается нужно определить отображения для столбца определенного типа, т к есть несколько перегрузок данного класса, и кол-во столбцов может меняться как и их тип.
Если надо что то нестандартное, то вы можете использовать DataGridTemplateColumn.
Давайте попробуем сделать то, что вы хотите:
Создаем DataGrid, привязываем его и убираем автоматическую генерацию столбцов:
<DataGrid ItemsSource="{Binding TestData}" AutoGenerateColumns="False"/>
Добавим колонку к примеру с именем элемента. Для этого мы внутри элемента обозначаем DataGrid.Columns c DataGridTextColumn элементом:
<DataGrid.Columns>
<DataGridTextColumn Header="Имя" Binding="{Binding Name}"/>
</DataGrid.Columns>
Теперь создадим столбец с датой. Задача у нас, это добавить туда элемент DatePicker. Элемент не стандартный, значит берем DataGridTemplateColumn. У него есть два интересных для нас свойства CellTemplate и CellEditingTemplate. Первый отвечает за вид самой ячейки, а второй за вид ячейки при изменении. По сути это обычные шаблоны в которых мы можем реализовать DataTemplate со своим элементом. Для примера сделаем что бы обычный вид был в виде текста, а при изменении использовался DatePicker:
<DataGridTemplateColumn Header="Дата" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Date, StringFormat=d}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding Date}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
Теперь запускаем и смотрим результат:
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости