Практическое руководство. Реализация проверки редактирования и ввода в элементе управления DataGrid (Архивный файл)

Предупреждение

Этот документ был архивирован, и компонент недоступен в текущей версии набора средств сообщества Windows.

Хотя нет немедленных планов по переносу этого компонента непосредственно в 8.x, важно понимать следующее:

  • WcT 7.x DataGrid по-прежнему используется вместе с компонентами WCT 8.x для существующих проектов.
  • Элемент управления DataGrid устарел в пользу нового компонента DataTable.

Для новой разработки рекомендуется использовать компонент DataTable, который предлагает улучшенные функциональные возможности и активно поддерживается. Если у вас есть конкретные требования, которым DataTable не удовлетворяет, рассмотрите возможность внести свой вклад в WCT Labs, где улучшения компонентов прототипируются и инкубируются.

Дополнительные сведения:

Исходная документация приведена ниже.


Изменение ячеек и строк

Элемент управления DataGrid поддерживает функции редактирования ячеек и строк. По умолчанию элементы можно редактировать непосредственно в DataGrid. Пользователь может ввести режим редактирования в ячейке, нажав клавишу F2 или дважды коснувшись ячейки. Кроме того, можно задать для свойства DataGridColumn.IsReadOnly значение true, чтобы отключить редактирование в определенных столбцах DataGrid.

<controls:DataGrid BeginningEdit="dg_Editing" CellEditEnding="dg_CellEditEnding" RowEditEnding="dg_RowEditEnding" />

Пример пользовательского интерфейса редактирования

Изменение уровня ячейки фиксируется при переходе на другую ячейку в той же строке. Все изменения в строке фиксируются при нажатии клавиши ВВОД или переходе к другой строке.

Чтобы гарантировать правильность фиксации и отмены изменений, объекты в DataGrid должны реализовать интерфейс IEditableObject .

Редактирование методов и событий

В следующей таблице перечислены методы и события, поддерживаемые DataGrid для функций редактирования ячеек и строк.

Тип Имя Description
Метод ПодготовкаЯчейкиДляРедактирования Происходит, когда ячейка в DataGridTemplateColumn входит в режим редактирования. Это событие не происходит для ячеек в других типах столбцов.
Метод PrepareCellForEdit Происходит, когда ячейка в столбце, производная от DataGridColumn, входит в режим редактирования. Это событие не происходит для ячеек типа DataGridTemplateColumn.
Метод НачатьРедактирование Позволяет сетке данных входить в режим редактирования текущей ячейки и текущей строки, если сетка данных еще не находится в режиме редактирования.
Метод CommitEdit Позволяет сетке данных зафиксировать текущее изменение в источнике данных и при необходимости выйти из режима редактирования.
Метод Отменить правку Позволяет сетке данных отменить текущее изменение, восстановить исходное значение и выйти из режима редактирования.
Event НачалоEdit Происходит до ввода ячейки или строки в режим редактирования. Это событие позволяет выполнять специальную обработку перед вводом ячейки или строки в режим редактирования.
Event CellEditEnding Происходит, когда изменение ячейки заканчивается. Это событие можно отменить, задав свойству Cancel аргумента e значение true в обработчике событий. Если это событие не отменено, указанное действие EditAction будет выполнено для подтверждения или отмены изменения. После успешного подтверждения или отмены изменения происходит событие CellEditEnded.
Event CellEditEnded Происходит при сохранении или отмене изменения ячейки.
Event RowEditEnding Происходит при завершении редактирования строки. Это событие можно отменить, задав свойству Cancel аргумента e значение true в обработчике событий. Если это событие не отменено, указанное действие EditAction будет выполнено для подтверждения или отмены изменения. После успешного подтверждения или отмены изменения происходит событие RowEditEnded.
Event РедактированиеСтрокиЗавершено Происходит при фиксации или отмене изменения строки.

Перечисления

  • Перечисление DataGridEditAction: указывает константы, определяющие, какое действие было предприняно для завершения изменения. Поддерживаемые члены:
    • Отмена: изменение было отменено.
    • Зафиксировано: изменение было внесено.
  • Перечисление DataGridEditingUnit: указывает константы, определяющие, включено ли редактирование на уровне ячейки или на уровне строки. Поддерживаемые члены:
    • Ячейка: включено редактирование ячеек.
    • Строка: включено редактирование строк.

Проверка входных данных

Элемент управления DataGrid поддерживает проверку вводимых данных с помощью INotifyDataErrorInfo в DataModel или ViewModel. Реализуйте логику проверки данных, реализуя методы DataErrorsChangedEventArgs, HasErrors и GetErrors. Элемент управления DataGrid автоматически отображает интерфейс ошибки в редактируемой ячейке или строке при выполнении условий ошибки.

Пример пользовательского интерфейса с INotifyDataErrorInfo

См. пример DataGrid для примера обработки проверки ввода в элементе управления DataGrid.

См. также