Порядок категорий в Xceed PropertyGrid

Я использую PropertyGrid в Xceed для отображения характеристик некоторых элементов. Для элемента есть разные категории, такие как: Общие, Расширенные, Другие, Особые. Здесь я обнаружил, что сетка свойств Xceed сортирует категории, а также свойства в алфавитном порядке. Я смог отсортировать свойства внутри категорий с помощью [PropertyOrder(n)]. Я также хотел отсортировать категории, поэтому я попытался использовать CategoryOrder, например [CategoryOrder("General", 0)], но он показывает следующую ошибку:

Ошибка 2 Атрибут CategoryOrder недопустим для этого типа объявления. Это действительно только для объявлений класса.

Я неправильно это использую? Приведенный ниже код - это всего лишь образец, демонстрирующий, как я это использую.

[Category("General")]
[CategoryOrder("General", 0)]
[DisplayName("XValue")]
[Description("Value of X-Coordinate")]
[ReadOnly(true)]
[PropertyOrder(1)]

[Category("Advanced")]
[CategoryOrder("Advanced", 1)]
[DisplayName("Collision")]
[Description("Collision")]
[ReadOnly(true)]
[PropertyOrder(1)]

[Category("Others")]
[CategoryOrder("Others", 3)]
[DisplayName("Traffic")]
[Description("Traffic at a point")]
[ReadOnly(true)]
[PropertyOrder(1)]

[Category("Special")]
[CategoryOrder("Special", 2)]
[DisplayName("Special cases")]
[Description("Contains the special cases and files")]
[PropertyOrder(1)]

person Skaranjit    schedule 20.04.2016    source источник


Ответы (1)


Вот пример того, как его следует использовать:

[CategoryOrder("General", 1)]
[CategoryOrder("Advanced", 2)]
[CategoryOrder("Other", 3)]
public class MyClass
{
    [Category("General")]
    public string Property1 { get; set; }
    [Category("Advanced")]
    public int Property2 { get; set; }
    [Category("Other")]
    public double Property3 { get; set; }
    [Category("General")]
    public string Property4 { get; set; }
    [Category("Advanced")]
    public int Property5 { get; set; }
    [Category("Other")]
    public double Property6 { get; set; }
}

введите описание изображения здесь

person jsanalytics    schedule 29.04.2016
comment
Быстрый вопрос. Я занимаюсь созданием динамического типа, и, хотя я правильно устанавливаю атрибуты категории во время выполнения, я не могу правильно установить их порядок. Используя приведенный выше код в качестве примера, вот что я делаю в коде ранее для назначения экземпляра MyClass PropertyGrid ... TypeDescriptor.AddAttributes(typeof(MyClass), new CategoryOrderAttribute("General", 1), new CategoryOrderAttribute("Advanced", 2), new CategoryOrderAttribute("Other", 3));, но он не работает. Есть идеи, почему? - person Mark A. Donohoe; 19.08.2019
comment
Кстати, я добавил это здесь как отдельный вопрос ... stackoverflow.com/q/57550862/168179 - person Mark A. Donohoe; 19.08.2019