Имена пользовательских свойств в PropertyGrid? - PullRequest
20 голосов
/ 17 сентября 2009

У меня есть класс, который я использую в PropertyGrid. Я обнаружил, что установив CategoryAttribute для каждого свойства, он, очевидно, создает новую категорию для каждого элемента. Это устанавливает в моей сетке свойств значение [+] для каждого элемента с моим собственным именем, и это не то поведение, которого я пытаюсь достичь.

В Visual Studio, если вы щелкнете по элементу в обозревателе решений, скажем, по сборке, у него будет ноль узлов дерева и просто список свойств с точно названными именами, т.е. любая строка может идентифицировать свойство, а не только объект название. Поэтому вместо этого:

[+ Путь к файлу]
FilePath | PropertyValue
[+ Размер файла]
FileSize | 0 KB

Я ищу это:

[+ File]
Путь к файлу | значение
Размер файла | 0 KB

Или даже выше без начального [+] узла. Я пролистал пространство имен System.ComponentModel в поисках подходящего атрибута, но не могу его найти.

Как мне добиться этого эффекта? Это должно быть возможно, Visual Studio делает это, и я считаю, что это один и тот же компонент, а не производный и расширенный.

Ответы [ 2 ]

41 голосов
/ 17 сентября 2009

Используйте DisplayNameAttribute , чтобы изменить отображаемый текст (сделать его более понятным для человека), DescriptionAttribute для добавления текста справки к свойству и CategoryAttribute сгруппировать свойства ..

using System.ComponentModel;

[Category("Test")]
[DisplayName("Test Property")]
[Description("This is the description that shows up")]
public string TestProperty {get;set;}
9 голосов
/ 17 сентября 2009

Вы хотите, чтобы CategoryAttribute был установлен в «Файл» для ОБА свойств:

[Category("File")]
public string FilePath { get; set;}

[Category("File")]
public int FileSize { get; set;}

Я рекомендую прочитать « Извлечение максимальной пользы из .NET Property Grid Control » для других идей, которые вы можете использовать для организации своих свойств, включая добавление описаний.

...