Пользовательские редакторы¶
Зарегистрируйте пользовательские редакторы для использования в контролах-контейнерах¶
Стандартный подход к указанию встроенных редакторов в контролах-контейнерах заключается в использовании свойства EditorProperties, предоставляемого этими контролами-контейнерами:
GridColumn.EditorPropertiesTreeListColumn.EditorPropertiesTreeViewControl.EditorPropertiesPropertyGridRow.EditorPropertiesToolbarEditorItem.EditorProperties
Например, следующий код присваивает контрол ButtonEditor столбцу таблицы. Код присваивает свойству GridColumn.EditorProperties значение объекта ButtonEditorProperties. В результате, контрол Grid для расширенной таблицы автоматически создаст встроенный контрол ButtonEditor на основе указанного объекта ButtonEditorProperties, когда начнется операция редактирования ячейки в этом столбце.
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
Совет
All Eremex editors are
BaseEditordescendants. -
Создайте потомка соответствующего класса
...Properties. Например, если ваш пользовательский редактор наследуется от контролаButtonEditor, выведите свой класс...PropertiesизButtonEditorProperties.Совет
All
...Propertiesclasses of Eremex editors are descendants of theBaseEditorPropertiesclass. -
Добавьте регистрационный код пользовательского редактора в статический конструктор вашего класса
...Properties. Используйте методEditorPropertiesProvider.Default.RegisterEditorдля регистрации редактора.
Метод EditorPropertiesProvider.Default.RegisterEditor имеет следующую сигнатуру:
void RegisterEditor(Type editor, Type editorProperties, Func<IBaseEditor> createEditorFunc, Func<BaseEditorProperties> createEditorPropertiesFunc)
editor— Тип пользовательского контрола редактора.editorProperties— Тип соответствующего класса...Properties.createEditorFunc— Пользовательская функция, вызываемая при создании пользовательского контрола редактора.createEditorPropertiesFunc— Пользовательская функция, вызываемая при создании пользовательского объекта...Properties.
Следующий код создает пользовательский контрол TextEditor. Он переопределяет формат отображения, используемый для форматирования значений редактора. Класс TextEditorWithCustomFormatProperties содержит статический конструктор, который регистрирует редактор.
using Eremex.AvaloniaUI.Controls.Editors;
public class TextEditorWithCustomFormat : TextEditor
{
protected override Type StyleKeyOverride => typeof(TextEditor);
}
public class TextEditorWithCustomFormatProperties : TextEditorProperties
{
public static string Formatter = $"Header_{{0}}";
public TextEditorWithCustomFormatProperties()
{
DisplayFormatString = Formatter;
}
static TextEditorWithCustomFormatProperties()
{
RegisterEditor();
}
static void RegisterEditor()
{
EditorPropertiesProvider.Default.RegisterEditor(typeof(TextEditorWithCustomFormat), typeof(TextEditorWithCustomFormatProperties),
() => new TextEditorWithCustomFormat(), () => new TextEditorWithCustomFormatProperties());
}
}
* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.