Table of Contents

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

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

Если вы явно не указываете редакторы ячеек, контролы TreeList и TreeView используют встроенные редакторы Eremex для отображения и редактирования значений ячеек распространенных типов данных:

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

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

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

Контролы TreeList и TreeView позволяют вам явно назначать встроенные редакторы Eremex ячейкам (столбцам), чтобы переопределить дефолтное назначение редактора, или настраивать редакторы ячеек в XAML или code-behind. Используйте для этой цели следующие свойства:

  • Контрол TreeView : TreeViewControl.EditorProperties

    Контрол TreeView отображает один столбец данных. Таким образом, свойство TreeViewControl.EditorProperties определяет встроенный редактор, используемый для редактирования ячеек этого столбца.

  • Контрол TreeList: TreeListColumn.EditorProperties

    Каждый столбец в контроле TreeList может иметь собственный встроенный редактор. Создайте столбец TreeList (объект TreeListColumn) в коллекции TreeListControl.Columns и установите редактор столбца, используя свойство TreeListColumn.EditorProperties.

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

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

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

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

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

xmlns:mxtl="clr-namespace:Eremex.AvaloniaUI.Controls.TreeList;assembly=Eremex.Avalonia.Controls" 
xmlns:mxe="clr-namespace:Eremex.AvaloniaUI.Controls.Editors;assembly=Eremex.Avalonia.Controls"

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

Пример - Как использовать ComboBoxEditor в качестве встроенного редактора в TreeView

Следующий код назначает встроенному редактору ComboBoxEditor TreeView.

xmlns:mxtl="clr-namespace:Eremex.AvaloniaUI.Controls.TreeList;assembly=Eremex.Avalonia.Controls" 
xmlns:mxe="clr-namespace:Eremex.AvaloniaUI.Controls.Editors;assembly=Eremex.Avalonia.Controls"

<mxtl:TreeViewControl.EditorProperties>
    <mxe:ComboBoxEditorProperties ItemsSource="{Binding Families}"/>
</mxtl:TreeViewControl.EditorProperties>

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

Контролы TreeList и TreeView позволяют использовать следующие свойства шаблона для назначения столбцам встроенных редакторов Eremex.:

  • TreeListColumn.CellTemplate
  • TreeViewControl.CellTemplate

Убедитесь, что для редактора Eremex, определенного в DataTemplate, свойству x:Name присвоено значение "PART_Editor". В этом случае контрол TreeList/TreeView автоматически привязывает свойство редактора EditorValue к полю строки. Кроме того, контрол начинает поддерживать свойства внешнего вида встроенного редактора (видимость границ и цвет отображаемого текста в активном и неактивном состояниях).

xmlns:mxtl="clr-namespace:Eremex.AvaloniaUI.Controls.TreeList;assembly=Eremex.Avalonia.Controls"
xmlns:mxe="clr-namespace:Eremex.AvaloniaUI.Controls.Editors;assembly=Eremex.Avalonia.Controls"
...
<mxtl:TreeListColumn Header="Phone" FieldName="Phone">
    <mxtl:TreeListColumn.CellTemplate>
        <DataTemplate>
            <mxe:ButtonEditor x:Name="PART_Editor">
                <mxe:ButtonEditor.Buttons>
                    <mxe:ButtonSettings Content="..."/>
                </mxe:ButtonEditor.Buttons>
            </mxe:ButtonEditor>
        </DataTemplate>
    </mxtl:TreeListColumn.CellTemplate>
</mxtl:TreeListColumn>

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

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

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

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

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

Контролы TreeList и TreeView предоставляют следующий API для получения и установки значений ячеек:

  • TreeListControl.GetCellDisplayText
  • TreeListControl.GetCellValue
  • TreeListControl.SetCellValue
  • TreeViewControl.GetCellDisplayText
  • TreeViewControl.GetCellValue
  • TreeViewControl.SetCellValue

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

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

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

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

Как отключить активацию редактора

Чтобы предотвратить активацию редактора ячеек в определенных случаях, вы можете обработать событие ShowingEditor и установить для параметра обработчика событий Cancel значение true.



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