Добавление нового свойства элементов управления
Элементы управления обладают набором свойств, которые определяют их поведение в веб-браузере пользователя: внешний вид, получение данных (для разметки карточки), обработка событий.
Когда программист формирует список свойств элемента управления нового типа, он может ссылаться только на существующие стандартные свойства (Стандартные свойства и события элементов управления). Если стандартные свойства не позволяют описать все особенности элемента управления, программист может сформировать новое свойство.
Добавить новое свойство элементов управления в Конструктор Web-разметок можно с помощью Расширения.
Описание файлов проекта
-
В корне репозитория расположено решение для Visual Studio (
Samples.sln) и ключ для подписания сборок примеров (StrongNameKey.snk). -
Assemblies— сборки, необходимые для использования примеров -
ServerExtension.cs— входная точка расширение, в которой регистрируются описания контролов и прочие сущности. -
Sign.snk— файл подписи сборки. Для установки сборки должны быть подписаны. Рекомендуется сгенерировать новый файл подписи в настройках проекта. -
Resource.resx,Resource.ru.resx— локализации, используемые в расширении. -
Constants.cs— файл для объявления констант.
Добавление свойства
Чтобы создать расширение, добавляющее новый тип свойств элементов управления, выполните приведенную далее инструкцию.
-
Убедитесь, что установлен Docsvision WebClient SDK.
В этом случае в переменной окружения
DocsvisionWebClientSDKсодержится путь к его папке, например,C:\Program Files (x86)\Docsvision\WebClient\5.5\SDK. -
Создайте проект расширения программы Конструктор Web-разметок.
-
Добавьте в ядро расширения (файл
TemplateDesignerExtension.cs) функцию, предоставляющую описатель свойства элемента управления.Описатель свойства элемента управления — это объект с типом
PropertyDescription, содержащий информацию о свойстве: название свойства, тип, категория, редактор, который должен использоваться для изменения значения, возможность локализации и настройки значения для определённого типа устройств.PropertyDescription GetSuperPropertyDescription() { var propertyDescription = new PropertyDescription(); propertyDescription.Name = "SuperProperty"; propertyDescription.DisplayName = "Супер свойство"; propertyDescription.Type = typeof(string); (1) propertyDescription.Category = PropertyCategoryConstants.DataCategory; (2) return propertyDescription; }1 Строковый тип свойства. 2 Указывает категорию свойства ( DataCategory— Данные).Обратитесь к описанию класса PropertyDescription, чтобы получить полный перечень возможностей описателя свойства элементов управления. -
Переопределите метод
GetPropertyDescriptionsбазового класса, чтобы он возвращал коллекцию с парой: ключ — имя. Возвращаемая коллекция позволяет получить описатель данного свойства. Используйте имя, указанное вpropertyDescription.Nameи метод, предоставляющий описатель свойства в качестве значения:protected override Dictionary<string, PropertyDescription> GetPropertyDescriptions() { return new Dictionary<string, PropertyDescription> { { "SuperProperty", GetSuperPropertyDescription()} }; } -
Скомпилируйте проект.
-
Скопируйте
safeprojectnamesafeprojectname.dllиsafeprojectnamesafeprojectname.dll.pdbиз папкиbin\PluginsвКаталог-установки-Web-клиента\Plugins.Ресурсные сборки скопируйте в папки
Каталог-установки-Web-клиента\ru\(для русской локализации),Каталог-установки-Web-клиента\uk\(для английской локализации) и т.д. -
Перезапустите Конструктор Web-разметок.
Проверка свойства
-
Добавьте
Супер свойствов список свойств элемента управления (вPropertyDescriptions).Для получения описателя свойства используйте метод PropertyFactory.Create, передав в него имя свойства, указанное при его регистрации в методеGetPropertyDescriptions.PropertyDescriptions = { PropertyFactory.GetNameProperty(), PropertyFactory.GetVisibilityProperty(), PropertyFactory.Create("SuperProperty"), (1) PropertyFactory.GetClickEvent() (2) }1 Получаем описатель свойства "SuperProperty". 2 Событие "При щелчке". -
Опубликуйте расширение с элементом управления на сервере Web-клиента.
-
Откройте для настройки любую разметку карточки.
-
Добавьте в разметку элемент управления с новым свойством. В его настройках будет Супер свойство.
Рисунок 1. Свойство элемента управления из расширения в редакторе разметок