Редактирование данных
Встроенные редакторы Eremex, используемые по умолчанию
Если вы явно не указываете редакторы ячеек, контролы TreeList и TreeView используют встроенные редакторы Eremex для отображения и редактирования значений ячеек распространенных типов данных:
- Логические значения —
CheckEditor
- Двойные значения —
SpinEditor
- Значения перечисления —
ComboBoxEditor
- Свойства с атрибутом
TypeConverter
, методTypeConverter.GetStandardValuesSupported
которого возвращаетtrue
—ComboBoxEditor
- Другие значения —
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
.
* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.