Нестандартные встроенные редакторы свойств

  1. Редактор локализуемых текстовых свойств.

Редактор локализуемых текстовых свойств
Рисунок 1. Редактор локализуемых текстовых свойств

Пример использования в коде:

private PropertyDescription GetLocalizableMessagePropertyDescription () {
    var propertyDescription = new PropertyDescription {
        Type = typeof (string),
        Name = "LocalizableMessage",
        Category = DocsVision.Platform.Tools.LayoutEditor.Infrostructure. PropertyCategoryConstants.DataCategory,
        DisplayName = "Localizable message",
        Localized = true,
        Editor = typeof (DocsVision.Platform.Tools.LayoutEditor.Editors.LocalizedPropertyEditor)
    };
    return propertyDescription;
}

Для использования редактора нужно:

  1. Установить свойство Type в string.

  2. Установить свойство Localized в true.

  3. Установить свойство Editor в Docsvision.Platform.Tools.LayoutEditor.Editors.LocalizedPropertyEditor.

  4. Редактор перечислений.

    Редактор перечислений
    Рисунок 2. Редактор перечислений

    Пример использования в коде:

    enum MessageBoxType {
        Error = 0,
        Warning = 1,
        Info = 2
    }
    
    class MessageBoxTypeSource : Xceed.Wpf.Toolkit.PropertyGrid.Attributes.IItemsSource { (1)
        private readonly System.IServiceProvider serviceProvider;
    
        public MessageBoxTypeSource (System.IServiceProvider serviceProvider) {
            this.serviceProvider = serviceProvider;
        }
    
        public Xceed.Wpf.Toolkit.PropertyGrid.Attributes.ItemCollection GetValues () { (2)
            var itemCollection = new Xceed.Wpf.Toolkit.PropertyGrid.Attributes.ItemCollection ();
    
            itemCollection.Add ((int) MessageBoxType.Error, MessageBoxType.Error.ToString ());
            itemCollection.Add ((int) MessageBoxType.Warning, MessageBoxType.Warning.ToString ());
            itemCollection.Add ((int) MessageBoxType.Info, MessageBoxType.Info.ToString ());
    
            return itemCollection;
        }
    }
    
    class MessageBoxTypeEditor : Xceed.Wpf.Toolkit.PropertyGrid.Editors.ITypeEditor { (3)
        public FrameworkElement ResolveEditor (PropertyItem propertyItem) {
    
            var editor = new ItemsSourceEditor (typeof (MessageBoxTypeSource)); (4)
            return editor.ResolveEditor (propertyItem);
        }
    }
    
    var propertyDescription = new PropertyDescription { (5)
        Type = typeof (int),
        Name = "MessageBoxType",
        Category = PropertyCategoryConstants.BehaviorCategory,
        DisplayName = Resources.Property_MessageBoxType_DisplayName,
        DefaultValue = 0,
        Editor = typeof (MessageBoxTypeEditor) (6)
    };
    1 Класс, содержащий данные списка. Должен быть унаследован от IItemsSource.
    2 Метод GetValues должен вернуть значения. Тип значений ItemCollection.
    3 Класс редактора значения свойства должен содержать значения.
    4 Редактор значения свойства создаётся из класса ItemsSourceEditor, в который передается класс с данными списка.
    5 Свойство для выбора значения из списка.
    6 Разработанный редактор значения свойства.
  5. Редактор устройствозависимых свойств.

    Значение свойств данного вида зависят от типа устройства, на котором открыт Web-клиент.

    Пример использования в коде:

    private PropertyDescription GetDeviceDependentPropertyDescription () {
        var propertyDescription = new PropertyDescription {
            Type = typeof (int),
            Name = "DeviceDependent",
            Category = PropertyCategoryConstants.DataCategory,
            DisplayName = "Device Dependent",
            DeviceDependent = true,
            DefaultValue = DeviceDependentHelper.GetDeviceDependentDefaultValue(1)
        };
        return propertyDescription;
    }