Вытягиваю данные в 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>
Теперь запускаем и смотрим результат:
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
помогите, пожалуйста, решить проблемуВозникает в этом месте