Skip to content

Редактирование данных

Встроенные редакторы Eremex по умолчанию

Дефолтное поведение контрола DataGrid заключается в использовании встроенных редакторов Eremex для отображения и редактирования значений ячеек распространенных типов данных.

datagrid-editing

В следующем списке показаны редакторы Eremex, связанные с распространенными типами данных:

  • Логические значения — CheckEditor
  • Двойные значения — SpinEditor
  • Значения перечисления — ComboBoxEditor
  • Свойства с атрибутом TypeConverter, метод TypeConverter.GetStandardValuesSupported которого возвращает trueComboBoxEditor
  • Другие значения — TextEditor

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

Когда в ячейке начинается операция редактирования, вы можете получить доступ к активному встроенному редактору и изменить его. Смотрите раздел Доступ к активному встроенному редактору Eremex для получения дополнительной информации.

Назначьте встроенных редакторов Eremex

Чтобы явно назначить встроенный редактор Eremex ячейкам (столбцам), используйте свойство GridColumn.EditorProperties.

Вы можете присвоить свойству EditorProperties следующие объекты, которые определяют тип встроенного редактора (все эти объекты являются потомками BaseEditorProperties):

  • ButtonEditorProperties — Содержит свойства, специфичные для контрола ButtonEditor.
  • CheckEditorProperties — Содержит свойства, специфичные для контрола CheckEditor.
  • ComboBoxEditorProperties — Содержит свойства, специфичные для контрола ComboBoxEditor.
  • DateEditorProperties — Содержит свойства, специфичные для контрола DateEditor.
  • HyperlinkEditorProperties — Содержит свойства, специфичные для контрола HyperlinkEditor.
  • MemoEditorProperties — Содержит свойства, специфичные для контрола MemoEditor.
  • PopupColorEditorProperties — Содержит свойства, специфичные для контрола PopupColorEditor.
  • SegmentedEditorProperties — Содержит свойства, специфичные для контрола SegmentedEditor.
  • SpinEditorProperties — Содержит свойства, специфичные для контрола SpinEditor.
  • TextEditorProperties — Содержит свойства, специфичные для контрола TextEditor.

Предположим, что вы присвоили свойству EditorProperties значение объекта SpinEditorProperties. В режиме отображения (редактирование ячеек не активно) контрол DataGrid эмулирует SpinEditor в ячейках целевого столбца, используя свойства объекта SpinEditorProperties. Никакой реальный SpinEditor не создается до тех пор, пока в ячейке не начнется операция редактирования. Когда пользователь запускает редактирование ячейки, контрол DataGrid создает встроенный редактор SpinEditor в выделенной ячейке. После завершения операции редактирования контрол уничтожает реальный SpinEditor и начинает эмулировать SpinEditor в этой ячейке. Смотрите Доступ к активному встроенному редактору Eremex , чтобы узнать, как получить доступ к реальному редактору ячеек.

Пример - Как использовать ButtonEditor в качестве встроенного редактора в столбце DataGrid

Следующий код присваивает встроенному редактору ButtonEditor столбец DataGrid.

xmlns:mxdg="https://schemas.eremexcontrols.net/avalonia/datagrid" 
xmlns:mxe="https://schemas.eremexcontrols.net/avalonia/editors"

<mxdg:DataGridControl.Columns>
    <mxdg:GridColumn Header="Name" FieldName="Name">
        <mxdg:GridColumn.EditorProperties>
            <mxe:ButtonEditorProperties>
                <mxe:ButtonEditorProperties.Buttons>
                    <mxe:ButtonSettings Content="Clear" 
                     Command="{Binding 
                      $parent[mxdg:CellControl].DataControl.DataContext.ClearValueCommand}"/>
                </mxe:ButtonEditorProperties.Buttons>
            </mxe:ButtonEditorProperties>
        </mxdg:GridColumn.EditorProperties>
    </mxdg:GridColumn>
</mxdg:DataGridControl.Columns>

Назначайте встроенные редакторы Eremex с помощью шаблонов

Вы можете использовать шаблоны для назначения редакторов Eremex столбцам DataGrid. Используйте свойство GridColumn.CellTemplate для этой цели.

Установите для свойства x:Name значение "PART_Editor" для редактора Eremex, определенного в шаблоне. Это обеспечивает автоматическую привязку значения редактора (BaseEditor.EditorValue) к полю столбца. Дополнительно, свойствами внешнего вида редактора (видимость границ и цвет отображаемого текста на переднем плане в активном и неактивном состояниях) будет управлять контрол DataGrid.

xmlns:mxdg="https://schemas.eremexcontrols.net/avalonia/datagrid"
xmlns:mxe="https://schemas.eremexcontrols.net/avalonia/editors"
...
<mxdg:GridColumn Header="Phone" FieldName="Phone">
    <mxdg:GridColumn.CellTemplate>
        <DataTemplate>
            <mxe:ButtonEditor x:Name="PART_Editor">
                <mxe:ButtonEditor.Buttons>
                    <mxe:ButtonSettings Content="..."/>
                </mxe:ButtonEditor.Buttons>
            </mxe:ButtonEditor>
        </DataTemplate>
    </mxdg:GridColumn.CellTemplate>
</mxdg:GridColumn>

Пользовательские редакторы

Вы можете указать пользовательские редакторы для столбцов DataGrid, используя следующие подходы:

  • Назначьте редактор непосредственно определенному столбцу.
  • Динамически назначайте редакторы столбцам на основе типа данных нижележащего объекта столбца.

Смотрите раздел Пользовательские редакторы для получения дополнительной информации.

Получение и установка значений ячеек

Используйте следующий API для получения и установки значений ячеек:

  • DataGridControl.GetCellValue
  • DataGridControl.SetCellValue

Доступ к активному встроенному редактору Eremex

  • Свойство ActiveEditor — Возвращает активный встроенный редактор.

Когда встроенному редактору Eremex назначается столбец Data Grid (неявно или явно с использованием свойства и шаблонов EditorSettings), контрол эмулирует указанный редактор встроенного редактора в ячейках этого столбца в режиме отображения (когда редактирование ячеек неактивно). На данный момент реального встроенного редактора не существует. Эмуляция редакторов ячеек в режиме отображения повышает производительность приложения.

Когда пользователь начинает редактировать ячейку, контрол создает реальный редактор встроенного текста. На данный момент вы можете использовать свойство ActiveEditor контрола для доступа к реальному экземпляру редактора Eremex. Когда ячейка теряет фокус, реальный редактор уничтожается, а свойство ActiveEditor возвращает значение null.

  • Событие ShowingEditor — позволяет получать уведомления о начале операций редактирования в ячейках строк. Вы можете безопасно получить доступ к свойству ActiveEditor в обработчике событий ShowingEditor.

Показать редактор ячеек

  • Метод ShowEditor — Активирует редактор ячеек в выделенной ячейке.
  • Событие ShowingEditor — Позволяет предотвратить активацию редактора ячеек пользователями в определенных случаях. При обработке события ShowingEditor установите для параметра события Cancel значение true, чтобы отключить активацию редактора.

Закройте активный встроенный редактор

  • Метод CloseEditor — Сохраняет изменения, внесенные в редакторе ячеек, и закрывает редактор.
  • Метод HideEditor — Закрывает редактор ячеек без сохранения каких-либо изменений.

  • Событие HiddenEditor — срабатывает после закрытия активного редактора ячеек.

Сохраните изменения, внесенные в встроенном редакторе

  • Метод CloseEditor — Сохраняет изменения, внесенные в редакторе ячеек, и закрывает редактор.
  • Метод PostEditor — Сохраняет изменения, внесенные в редакторе активных ячеек, не закрывая редактор.



* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.