2009-09-17 4 views
17

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

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

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

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

Я ищу это:

[+ файл]
        File Path | стоимость
        Размер файла | 0 KB

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

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

Спасибо! -Эрик

ответ

38

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

using System.ComponentModel; 

[Category("Test")] 
[DisplayName("Test Property")] 
[Description("This is the description that shows up")] 
public string TestProperty {get;set;} 
+3

вы также можете использовать атрибут Description, чтобы предоставить более подробное описание пользователю – JDunkerley

+0

Большое спасибо :) Lifesaver. +1 –

9

Вы хотите иметь CategoryAttribute набор «Файл» для обоих свойств:

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

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

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

+1

Вы скучали бит о отображаемом имени (образец в моем ответе, если вы хотите добавить его) –

+1

Да, это решает поставить их под одним деревом, но мне нужен атрибут DisplayName из выбранного ответа. Спасибо хоть! : D –

Смежные вопросы