Добавление нового типа свойств в текстовом описателе

Новый тип свойств можно добавить с помощью серверного расширения (см. Добавление нового свойства элементов управления) или описать непосредственно в текстовом описателе элемента управления.

Добавление нового типа свойства

Чтобы добавить новый тип свойств:
  1. Добавьте дочерний элемент Property в секцию Properties текстового описателя.

  2. Добавьте в элемент Property аргументы:

    Name

    Название нового типа свойств.

    DataType

    Тип значения свойств. В DataType может быть указан только стандартный тип — должно быть указано полное название типа (например, System.Boolean).

    ResourceKey

    Название локализованного ресурса для отображаемого названия.

    Category

    Категория свойства. Может иметь значения: GeneralCategory, DataCategory, BehaviorCategory, AppearanceCategory, EventsCategory, DefaultValueCategory.

    Editor

    Имя редактора значения, которое указано при его регистрации в методе GetEditors расширения программы Конструктор Web-разметок.

    BindingConverter

    Имя конвертера в серверном расширении для свойства Type="Binding".

    BindingResolver

    Имя резолвера биндинга в серверном расширении для свойства Type="Binding".

    ItemsSource

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

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

    DefaultValue

    Значение по умолчанию.

    DeviceDependent

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

    Localized

    Флаг, указывающий на то, что свойство является локализуемым.

    При объявлении свойств можно указывать одновременно Type и другие параметры. Свойство, указанное в Type, станет основой для нового, которое может быть дополнительно настроено.

    Следующий пример демонстрирует объявление свойства superBinding, основанного на стандартном свойстве Binding, с переопределённым конвертером (BindingConverter):

    <Property Type="Binding" Name="superBinding" BindingConverter="SuperConverter" />

Примеры объявления свойств

  • Свойство, получающее значения из источника значений (ItemsSource):

    <Property Name="SuperMode" DisplayName="Супер свойство с вариантами"
        Category="AppearanceCategory" DataType="System.Int32" DefaultValue="0"
        ItemsSource="SuperExtension.SuperVariantsSource" />

    Пример реализации класса SuperExtension.SuperVariantsSource, предоставляющего значения для свойства:

    namespace SuperExtension
    {
        public class SuperVariantsSource : IItemsSource
        {
            public ItemCollection GetValues()
            {
                ItemCollection values = new ItemCollection();
                values.Add(0, "Вариант 1"); (1)
                values.Add(1, "Вариант 2"); (2)
                values.Add(2, Resource.LocalizedVariant3); (3)
                return values;
            }
        }
    }
    1 При выборе этого варианта, значение свойства будет 0.
    2 При этом варианте, значение 1.
    3 Имя варианта можно объявить в ресурсах с целью локализации.
  • Свойство логического типа, зависящее от устройства (DeviceDependent), с категорией Внешний вид (AppearanceCategory) и значением по умолчанию false:

    <Property Name="ShowPreview" ResourceKey="History_ShowPreview"
        Category="AppearanceCategory" DataType="System.Boolean" DefaultValue="false" DeviceDependent="true" />
  • Свойство числового типа с категорией Поведение(BehaviorCategory) и значением по умолчанию 20:

    <Property Name="RecordsOnPage" Editor="PositiveIntegerEditor"
        Category="BehaviorCategory" DataType="System.Int32" DefaultValue="20"/>
  • Свойство строкового типа:

    <Property Name="DurationControlName" Category="BehaviorCategory" DataType="System.String"/>
  • Локализованное свойство (Localized) строкового типа со стандартным редактором (Editor) LocalizedPropertyEditor:

    <Property Name="ButtonText" Editor="LocalizedPropertyEditor" Localized="true"
        Category="AppearanceCategory" DataType="System.String"/>