Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Элемент управления DataGrid позволяет отображать и изменять данные из различных источников, например из базы данных SQL, запроса LINQ или любого другого привязываемого источника данных. Дополнительную информацию см. в обзоре источников привязки .
Привязка к данным
Чтобы привязать DataGrid к данным, установите свойство ItemsSource как реализацию IEnumerable. Каждая строка в сетке данных привязана к объекту в источнике данных, и каждый столбец в сетке данных привязан к свойству объекта данных.
DataGrid Для автоматического обновления пользовательского интерфейса при добавлении или удалении элементов из исходных данных DataGrid необходимо привязать к коллекции, реализующей INotifyCollectionChanged интерфейс, напримерObservableCollection<T>. Для автоматического отражения изменений свойств объекты в исходной коллекции должны реализовать INotifyPropertyChanged интерфейс. Дополнительные сведения см. в разделе "Обзор привязки данных".
Столбцы могут отображать текст, элементы управления, такие как ComboBox, или любое другое содержимое WPF, например изображения, кнопки или любое содержимое, содержащееся в шаблоне. Для отображения данных, определенных в шаблоне, можно использовать DataGridTemplateColumn. В следующей таблице перечислены типы столбцов, предоставляемые по умолчанию.
| Тип созданного столбца | Тип данных |
|---|---|
| DataGridTextColumn | String |
| DataGridCheckBoxColumn | Boolean |
| DataGridComboBoxColumn | Enum |
| DataGridHyperlinkColumn | Uri |
Автоматически создаваемые столбцы
По умолчанию элемент DataGrid управления автоматически создает столбцы при установке свойства ItemsSource. Тип создаваемого столбца зависит от типа данных в столбце, как показано в предыдущей таблице.
При автоматическом создании столбцов можно обрабатывать событие AutoGeneratingColumn, чтобы настроить или отменить столбцы перед их добавлением в DataGrid. Если вы добавляете как определяемые пользователем, так и автоматически создаваемые столбцы в DataGrid, сначала добавляются определяемые пользователем столбцы. Чтобы изменить порядок отображения столбцов, можно задать DisplayIndex свойство для отдельных столбцов.
Вы можете запретить автоматическое создание столбцов, установив свойству AutoGenerateColumns значение false. Это полезно, если вы хотите создать и настроить все столбцы явным образом.
Настраиваемые столбцы
DataGridTemplateColumn Используйте тип для определения настраиваемого столбца, если встроенные типы столбцов не соответствуют вашим потребностям. Тип DataGridTemplateColumn предоставляет CellTemplate и CellEditingTemplate свойства, позволяющие указывать шаблоны контента для режимов отображения и редактирования. Например, можно определить настраиваемый столбец для дат. Компонент CellTemplate может определить компонент TextBlock, чтобы отображать дату, а компонент CellEditingTemplate может определить элемент управления DatePicker для редактирования даты.
Можно использовать коллекцию Columns для программного добавления, вставки, удаления и изменения любых столбцов в элементе управления во время выполнения программы. IsAutoGenerated Проверьте свойство, чтобы определить, создается ли столбец автоматически или определяется пользователем. Автоматически созданные столбцы добавляются, удаляются или повторно создаются при изменениях ItemsSource.
DataGrid можно настроить во внешнем виде, например шрифт ячейки, цвет и размер. DataGrid поддерживает все функции стилей и шаблонов других элементов управления WPF. DataGrid также включает поведение по умолчанию и настраиваемое поведение для редактирования, сортировки и проверки.
Редактирование
По умолчанию элементы можно редактировать непосредственно в элементе DataGrid. Чтобы гарантировать правильность фиксации и отмены изменений, объекты в DataGrid должны реализовать интерфейс IEditableObject. Кроме того, можно задать свойство IsReadOnly, чтобы true отключить редактирование в элементе DataGrid.
DataGrid имеет встроенную поддержку следующих команд редактирования:
| Command | Ключ по умолчанию |
|---|---|
| BeginEditCommand | F2 |
| CancelEditCommand | ESC |
| CommitEditCommand | ENTER |
| DeleteCommand | Удалить |
Вы помещаете текущую ячейку в режим редактирования, щелкнув ее или нажав клавишу F2. Изменение на уровне ячейки фиксируется при переходе на другую ячейку в той же строке или при нажатии клавиши ВВОД, когда ячейка находится в режиме редактирования. Все изменения в строке фиксируются при переходе к другой строке или нажатии клавиши ВВОД, пока строка находится в режиме редактирования. Вы отменяете изменение ячейки, нажав клавишу ESC один раз, и отменяете все изменения в строке, дважды нажав клавишу ESC. Дополнительную информацию о программной фиксации и отмене изменений см. в методах BeginEdit, CommitEdit и CancelEdit.
Установите свойства CanUserAddRows и CanUserDeleteRows, чтобы указать, может ли пользователь добавлять или удалять строки. Пользователь может удалить выбранные строки, нажав клавишу DELETE.
CanUserAddRows Если для свойства задано значение true, новая строка элемента добавляется как последняя строка в DataGrid. Значения по умолчанию для новых элементов можно задать, обрабатывая InitializingNewItem событие.
Замечание
Возможность редактирования действий определяется многими факторами, включая состояние IsReadOnly и IsEnabled, и позволяет ли базовая коллекция данных выполнение действия.
Отбор
По умолчанию вся строка выбирается, когда пользователь щелкает ячейку в DataGridячейке, а пользователь может выбрать несколько строк. Можно задать SelectionUnit свойство, чтобы указать, может ли пользователь выбирать ячейки, полные строки или оба. SelectionMode Задайте свойство, чтобы указать, можно ли выбрать несколько строк или ячеек, или только отдельные строки или ячейки.
Вы можете получить сведения о выбранных ячейках из свойства SelectedCells. Вы можете получить сведения о ячейках, для которых выбор изменился в SelectedCellsChangedEventArgs событии SelectedCellsChanged . Вызовите метод SelectAllCells или метод UnselectAllCells для программного выбора всех ячеек или отмены выбора. Дополнительные сведения см. в разделе "Поведение клавиатуры и мыши по умолчанию" в элементе управления DataGrid.
Группирование, сортировка и фильтрация
По умолчанию можно сортировать элементы в DataGrid столбце, щелкнув заголовок столбца. Вы можете настроить сортировку, обрабатывая Sorting событие. Чтобы отменить сортировку по умолчанию, установите свойство Handled в значение true. Вы также можете сортировать исходные данные перед отображением в DataGrid.
Чтобы сгруппировать, отсортировать и отфильтровать данные в DataGrid, необходимо привязать DataGrid к реализации ICollectionView, которая поддерживает эти операции. Затем вы выполняете операции в представлении коллекции. Когда элементы группируются в элементе DataGrid, можно определить GroupStyle , что указывает внешний вид каждой группы. Примените GroupStyle, добавив его в коллекцию GroupStyleDataGrid. При наличии нескольких уровней группировки можно применять различные стили к каждому уровню группы. Стили применяются в порядке, в котором они определены. Дополнительные сведения см. в разделе "Практическое руководство. Группировка, сортировка и фильтрация данных" в элементе управления DataGrid.
Validation
Это DataGrid позволяет выполнять проверку как на уровне ячейки, так и на уровне строк. При проверке на уровне ячеек вы проверяете отдельные свойства привязанного объекта данных при обновлении значения пользователем. При проверке на уровне строк все объекты данных проверяются при фиксации пользователем изменений в строке. Вы можете предоставить настраиваемую визуальную обратную связь об ошибках проверки на уровне строк, задав RowValidationErrorTemplate свойство, или воспользоваться индикатором ошибок по умолчанию. Чтобы создать настраиваемое правило проверки, создайте класс, производный от ValidationRule класса и реализующий Validate метод. Добавьте настраиваемое правило проверки в коллекцию RowValidationRules .
Стандартные задачи
В следующей таблице перечислены некоторые распространенные задачи для DataGrid и способы их выполнения. Просмотрев связанный API, вы можете найти дополнительные сведения и пример кода.
| Сценарий | Подход |
|---|---|
| Чередующиеся цвета фона | Задайте для свойства AlternationCount значение 2 или более, а затем назначьте Brush свойствам RowBackground и AlternatingRowBackground. |
| Определение поведения выделения ячеек и строк | Задайте свойства SelectionMode и SelectionUnit. |
| Настройка визуального вида заголовков, ячеек и строк | Примените новый Style к свойствам ColumnHeaderStyle, RowHeaderStyle, CellStyleили RowStyle. |
| Настройка параметров размера | Задайте свойства Height, MaxHeight, MinHeight, Width, MaxWidthили MinWidth. См. раздел Параметры размера в элементе управленияDataGrid для получения дополнительной информации. |
| Доступ к выбранным элементам | Проверьте свойство SelectedCells, чтобы получить выбранные ячейки и свойство SelectedItems, чтобы получить выбранные строки. Дополнительные сведения см. в разделе SelectedCells. |
| Настройка взаимодействий конечных пользователей | Задайте свойства CanUserAddRows, CanUserDeleteRows, CanUserReorderColumns, CanUserResizeColumns, CanUserResizeRowsи CanUserSortColumns. |
| Отмена или изменение автоматически созданных столбцов | Обработайте событие AutoGeneratingColumn. |
| Замораживание столбца | Задайте для свойства FrozenColumnCount значение 1 и переместите столбец в левую позицию, установив для свойства DisplayIndex значение 0. |
| Использование XML-данных в качестве источника данных | Привязите ItemsSource на DataGrid к XPath запросу, который представляет коллекцию элементов. Создайте каждый столбец в DataGrid. Привяжите каждый столбец, установив XPath в привязке к запросу, который извлекает свойство из источника элемента. Пример см. в разделе DataGridTextColumn. |
Связанные статьи
Настройка DataGrid
Элемент DataGrid управления поддерживает общие параметры форматирования таблицы, такие как чередование фонов строк и возможность отображения или скрытия заголовков, линий сетки и полос прокрутки. Кроме того, элемент управления предоставляет несколько свойств стиля и шаблона, которые можно использовать для полного изменения внешнего вида элемента управления и его строк, столбцов, заголовков и ячеек.
Чтобы настроить DataGrid поведение, можно обрабатывать события для изменения выбора, редактирования ячеек и переупорядочения столбцов. Также DataGrid предоставляет несколько событий для переиспользования строк, которые можно использовать для настройки строк.
Чтобы применить одинаковые параметры к нескольким DataGrid элементам управления, используйте свойство Style. Вы можете изменить значение по умолчанию ControlTemplate , чтобы предоставить элементу управления уникальный внешний вид. Дополнительные сведения о создании ControlTemplateэлемента управления см. в статье "Создание шаблона для элемента управления".
Свойства зависимостей для этого элемента управления могут быть заданы стилем по умолчанию элемента управления. Если свойство задано по умолчанию, свойство может измениться с его значения по умолчанию, когда элемент управления появится в приложении. Стиль по умолчанию определяется темой рабочего стола, используемой при запуске приложения.
Замечание
Установка визуального свойства действует только в том случае, если это свойство присутствует в шаблоне элемента управления по умолчанию и установлено с помощью TemplateBinding.
Стили и шаблоны
В этом разделе описываются стили и шаблоны элемента DataGrid управления. Вы можете изменить значение по умолчанию ControlTemplate , чтобы предоставить элементу управления уникальный внешний вид. Дополнительные сведения см. в статье "Стилизация" и "Шаблон" и"Создание шаблона" для элемента управления.
Свойство контента
Элемент управления DataGrid использует свойство ItemsSource для определения источника данных. Источник данных может быть любой привязываемой коллекцией, например базой данных, запросом LINQ или другим привязываемым источником данных.
Комплектующие
Этот элемент управления не определяет какие-либо части шаблона.
Визуальные состояния
В следующей DataGrid таблице перечислены визуальные состояния элемента управления.
| Имя VisualState | Имя VisualStateGroup | Описание |
|---|---|---|
| Обычная | CommonStates | Элемент управления находится в обычном состоянии. |
| Disabled | CommonStates | Элемент управления отключен. |
| Действительный | ValidationStates | Элемент управления действителен и не имеет ошибок проверки. |
| НедействительныйФокус | ValidationStates | Элемент управления имеет ошибку проверки и находится в фокусе клавиатуры. |
| НедействительныйНефокусированный | ValidationStates | Элемент управления имеет ошибку проверки, но не имеет фокуса клавиатуры. |
Типы элементов DataGrid
Элемент DataGrid управления состоит из нескольких типов элементов. Сведения об этих элементах и их стилях и шаблонах см. в разделе DataGrid Elements.
См. также
.NET Desktop feedback