DataGrid — это таблица для отображения и редактирования данных. Колонки, строки, сортировка, выделение — всё из коробки.
Самое часто используемые свойства
| Свойство | Что делает | Пример |
|---|
| ItemsSource | откуда брать данные (обычно список) | ItemsSource="{Binding Users}" |
| AutoGenerateColumns | сам создать колонки или вручную | AutoGenerateColumns="False" |
| SelectedItem | выбранная строка (биндишь в VM) | SelectedItem="{Binding SelectedUser}" |
| CanUserAddRows | показывать строку для новой записи | CanUserAddRows="True" |
| CanUserDeleteRows | удалять строки (обычно через Delete) | CanUserDeleteRows="True" |
| IsReadOnly | только чтение, без редактирования | IsReadOnly="True" |
| HeadersVisibility | показывать заголовки | HeadersVisibility="Column" |
Типы колонок (Column Types)
| Тип | Что показывает |
|---|
DataGridTextColumn | обычный текст |
DataGridCheckBoxColumn | чекбокс (для bool) |
DataGridComboBoxColumn | выпадающий список |
DataGridHyperlinkColumn | ссылка |
DataGridTemplateColumn | своя вёрстка (максимум контроля) |
Быстрый пример
<DataGrid ItemsSource="{Binding Products}"
AutoGenerateColumns="False"
SelectedItem="{Binding SelectedProduct}"
CanUserAddRows="True"
IsReadOnly="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Название" Binding="{Binding Name}"/>
<DataGridTextColumn Header="Цена" Binding="{Binding Price}"/>
<DataGridCheckBoxColumn Header="В наличии" Binding="{Binding InStock}"/>
</DataGrid.Columns>
</DataGrid>
Класс для примера выше
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public bool InStock { get; set; }
}
Что ещё полезно знать
| Свойство | Описание |
|---|
AlternatingRowBackground | цвет чётных/нечётных строк |
RowHeight | высота строки (фикс) |
FontSize / FontFamily | стиль текста |
SelectionMode | Single или Extended (множественный выбор) |
CanUserReorderColumns | перетаскивать колонки мышкой |
CanUserResizeColumns | изменять ширину колонок |
CanUserSortColumns | сортировка по клику на заголовок |