PropertyDescription — класс

Класс PropertyDescription содержит описание свойства элемента управления в расширении программы Конструктор Web-разметок.

Пространство имён: DocsVision.Platform.Tools.LayoutEditor.ObjectModel.Descriptions

Сборка: DocsVision.LayoutEditor.ObjectModel.dll

Синтаксис

public class PropertyDescription : ICloneable

Конструкторы

Имя Описание

PropertyDescription(String)

Инициализирует новый экземпляр класса PropertyDescription.

Свойства

Имя Описание

BindingResolverType

Зарезервировано.

Category

Задаёт или возвращает категорию свойства.

ChangeLocalizaionKeys

Задаёт или возвращает функцию обновления ключей локализации при копировании свойства с сериализованным значением.

CheckAvailablity

Задаёт или возвращает функцию проверки доступности свойства для настройки в текущем контексте (к примеру, в текущем типе разметки).

CollectLocalizationKeys

Задаёт или возвращает функцию получения нужных ключей локализации при копировании свойства с сериализованным значением.

DefaultValue

Задаёт или возвращает значение по умолчанию.

DeviceDependent

Задаёт или возвращает флаг, указывающий, зависит ли значение свойства от типа клиентского устройства.

DisplayName

Задаёт или возвращает строковый ресурс, предоставляющий локализованное название элемента управления.

Editor

Задаёт или возвращает тип компонента редактирования (редактора) значения свойства. Редактор является компонентом UserControl с реализованным интерфейсом Xceed.Wpf.Toolkit.PropertyGrid.Editors. ITypeEditor (сборка Xceed.Wpf.Toolkit.Fixed.dll).

ExcludeFromIL

Задаёт или возвращает флаг, указывающий, будет ли данное свойство исключено из пакета свойств элемента управления, передаваемых в клиентскую часть Web-клиента. Свойство с установленным флагом ExcludeFromIL остается настраиваемым в программе Конструктор Web-разметок.

GenerateDefaultValue

Задаёт или возвращает метод, генерирующий для свойства значение по умолчанию.

GenerateValueOnPaste

Задаёт или возвращает метод, генерирующий значение свойства при копировании элемента управления, содержащего данное свойство.

GetBindingLoader

Задаёт или возвращает функцию, реализующую механизм получения и сохранения значения свойства.

Hidden

Задаёт или возвращает флаг, определяющий, является ли свойство скрытым. Скрытое свойство не отображается при настройке элемента управления.

IsTemporarilyReadOnly

Задаёт или возвращает функцию, проверяющую является ли элемент управления доступным только на чтение.

ItemsSource

Задаёт или возвращает тип компонента, который предоставляет список готовых значений свойства, из которого значение свойства выбирается.

Localized

Задаёт или возвращает флаг, указывающий, является ли свойство локализуемым. Свойство должно быть строкового типа. Для редактирования значения локализуемого свойства в Editor должен быть указан тип редактора LocalizedPropertyEditor.

Name

Задаёт или возвращает уникальное название свойства.

Priority

Задаёт или возвращает порядок отображения свойства в текущей категории свойств. Чем выше порядок, тем выше будет отображено свойство.

PropertyResolverType

Задаёт или возвращает название компонента, предоставляющего дополнительную возможность настройки свойства: DeviceDependent (зависящего от типа устройства), Localized (зависящего от локализации). Рекомендуется использовать вместо PropertyResolverType флаги Localized и DeviceDependent класса PropertyDescription.

ReadOnly

Задаёт или возвращает флаг, указывающий, является ли значение элемента управления доступным только на чтение.

RefreshProperties

Задаёт или возвращает флаг, указывающий, требуется ли обновлять отображаемое значение свойства при изменении значения. В true следует устанавливать, если для изменения свойства используется отдельное окно редактирования.

Type

Задаёт или возвращает тип значения свойства.

Validate

Задаёт или возвращает функцию валидации значения свойства.

Примеры

Следующий код демонстрирует пример свойства Slider, добавляемого в категорию Данные. Для свойства назначается специализированный редактор значения — SliderEditor.

private PropertyDescription GetSliderPropertyDescription()
{
 return new PropertyDescription (1)
 {
  Type = typeof(string), (2)
  Name = Constants.SampleImage.Slider, (3)
  Category = PropertyCategoryConstants.DataCategory, (4)
  DisplayName = Resources.ControlTypes_SliderProperty, (5)
  DefaultValue = String.Empty, (6)
  ExcludeFromIL = true, (7)
  Editor = typeof(SliderEditor), (8)

  CollectLocalizationKeys = args => (9)
  {
   var value = (string)args.ControlInfo.GetProperty(args.PropertyDescription.Name); (10)
   var items = SliderModeHelper.StringToItems(value); (11)
   var keys = args.LocalizationKeys; (12)
   foreach (var item in items) (13)
   {
    if (!string.IsNullOrEmpty(item.DescriptionLocalizationKey))
     keys.Add(item.DescriptionLocalizationKey);
   }
  },
  ChangeLocalizationKeys = args => (14)
  {
   var value = (string)args.ControlInfo.GetProperty(args.PropertyDescription.Name);

   var items = SliderModeHelper.StringToItems(value);
   var mapping = args.LocalizationMapping;
   foreach (var item in items)
   {
    if (!string.IsNullOrEmpty(item.DescriptionLocalizationKey))
    {
     string newKey;
     if (mapping.TryGetValue(item.DescriptionLocalizationKey, out newKey)) (15)
      item.DescriptionLocalizationKey = newKey;
     }
    }
    return SliderModeHelper.ItemsToString(items); (16)
  }
 };
}
1 Создаем экземпляр класса описания свойства .
2 Определяем строковый тип данного свойства ЭУ. Реальное значение сериализуемое.
3 Указывается уникальное название.
4 Категория для размещения свойства Данные.
5 Отображаемое название свойства.
6 Пустое значение по умолчанию.
7 Свойство не должно передаваться на клиентскую сторону Web-клиента.
8 Указываем специфический редактор значения свойства.
9 Определяем метод, который будет вызываться при копировании свойства. Метод получает ключи локализации DescriptionLocalizationKey из объекта свойства args.PropertyDescription.Name и заполняет ими коллекцию args.LocalizationKeys.
10 Получаем значение требуемого свойства.
11 Десериализуем значение свойства в нужный класс.
12 Получаем из параметров (передается в args) элемента управления текущей разметки.
13 Заполняем keys ключами из описания свойства.
14 Определяем метод, который будет вызываться при копировании элемента управления и, соответственно, его свойств.
15 Создаем связь.
16 Сериализуем значение свойства.