Пользовательские редакторы¶
Зарегистрируйте пользовательские редакторы для использования в контролах-контейнерах¶
Стандартный подход к указанию встроенных редакторов в контролах-контейнерах заключается в использовании свойства EditorProperties
, предоставляемого этими контролами-контейнерами:
GridColumn.EditorProperties
TreeListColumn.EditorProperties
TreeViewControl.EditorProperties
PropertyGridRow.EditorProperties
ToolbarEditorItem.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
BaseEditor
descendants. -
Создайте потомка соответствующего класса
...Properties
. Например, если ваш пользовательский редактор наследуется от контролаButtonEditor
, выведите свой класс...Properties
изButtonEditorProperties
.Совет
All
...Properties
classes of Eremex editors are descendants of theBaseEditorProperties
class. -
Добавьте регистрационный код пользовательского редактора в статический конструктор вашего класса
...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());
}
}
* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.