Добавление редактора для значения свойства элемента управления
Редактор предоставляет пользовательский интерфейс для изменения значения свойства в программе Конструктор Web-разметок.
Новый редактор нужно разрабатывать, когда требуется поддержать возможность изменения свойства со сложным типом значения, предоставить новый пользовательский интерфейс для изменения свойства или изменить логику работы со значением свойства.
Редактор представляет собой элемент управления с типом System.Windows.Controls.UserControl
, в котором реализован интерфейс Xceed.Wpf.Toolkit.PropertyGrid.Editors.ITypeEditor
. Рекомендуемые размеры элемента управления: 20x200px
. Если для изменения значения свойства требуется форма большего размера, разработайте её в отдельном компоненте с типом System.Windows.Window
, а в основной компонент UserControl
добавьте функцию, вызывающую данную форму.
Добавить новый редактор
Добавить новый редактор в Конструктор Web-разметок можно с помощью Расширения.
-
Создайте проект расширения программы Конструктор Web-разметок.
-
Добавьте в проект компонент с типом UserControl (WPF) и реализуйте в нем программный интерфейс ITypeEditor.
Значение свойства можно получить из переменной propertyItem.Value
. При изменении значения, его нужно сохранить вpropertyItem.Value
. -
Переопределите метод
GetEditors
базового класса расширения, чтобы он возвращал коллекцию с парой: ключ — имя. Используя данный метод, можно получить редактор. Значением будет тип редактора:protected override Dictionary<string, Type> GetEditors() { return new Dictionary<string, Type> { { "SuperEditor", typeof(Editors.SuperEditor) } }; }
-
Скомпилируйте проект и скопируйте полученную сборку на сервер Web-клиента в папку
\%WebCinstallDir%\Plugins\\%Каталог Решения%
. Ресурсные сборки скопируйте в папки\%WebCinstallDir%\ru\
(для русской локализации),\%WebCinstallDir%\uk\
(для английской локализации) и т.д. -
Перезапустите Конструктор Web-разметок.
Проверка примера
-
Создайте новое свойство элемента управления в расширении с Супер редактором.
-
Укажите Супер редактор в качестве редактора свойства в параметре Editor.
PropertyDescription GetSuperPropertyDescription() { var propertyDescription = new PropertyDescription(); propertyDescription.Name = "SuperProperty"; propertyDescription.Type = typeof(string); (1) propertyDescription.Category = PropertyCategoryConstants.DataCategory; propertyDescription.DisplayName = "Супер свойство"; propertyDescription.Editor = typeof(SuperEditor); (2) return propertyDescription; }
1 Тип свойства должен быть string! 2 Указываем тип "Супер редактора". -
Добавьте свойство с редактором Супер редактор в описатель элемента управления. См. пример в пункте Добавление нового свойства элементов управления.
-
Опубликуйте расширение с элементом управления на сервере Web-клиента.
-
Откройте для настройки любую разметку.
-
Добавьте в разметку элемент управления, содержащий свойство с редактором. Для изменения значения свойства будет использован Супер редактор.
Рисунок 1. Супер свойство с собственным редакторомИзменение значения свойства осуществляется в диалоговом окне, открываемом при нажатии кнопки … (три точки).
Рисунок 2. Диалоговое окно изменения значения свойства