WPFUI элементыDataGrid

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стиль текста
SelectionModeSingle или Extended (множественный выбор)
CanUserReorderColumnsперетаскивать колонки мышкой
CanUserResizeColumnsизменять ширину колонок
CanUserSortColumnsсортировка по клику на заголовок
Built with LogoFlowershow