2009-09-17 20 views
17

Czuję się jak idiota za to, że jestem tym zaskoczony. Czuję, że odpowiedź musi być oczywista. Ale, niestety, po spędzeniu zbyt dużej ilości czasu przeglądając Przeglądarkę obiektów i Googling, przychodzę szukać pomocy.PropertyGrid - niestandardowe nazwy właściwości?

Mam klasę, której używam w PropertyGrid. Zauważyłem, że ustawiając CategoryAtrybut na każdej nieruchomości, oczywiście tworzy nową kategorię dla każdego przedmiotu. Powoduje to, że moja siatka własności ma [+] dla każdego elementu z moim niestandardowym nazwiskiem i nie jest to zachowanie, które próbuję osiągnąć.

W Visual Studio, po kliknięciu elementu w Eksploratorze rozwiązań, powiedzmy, zespół, ma zero węzłów drzewa i tylko listę doskonale nazwanych właściwości, tj. Dowolny ciąg może identyfikować właściwość, a nie tylko nazwa obiektu. Więc zamiast tego:

[+ ścieżka do pliku]
        filePath | propertyValue
[+ Rozmiar pliku]
        FileSize | 0 KB

szukam to:

[+ File]
        Path File | wartość:
        Rozmiar pliku | 0 KB

Lub nawet powyżej bez początkowego węzła [+]. Przelałem się przez obszar nazw System.ComponentModel, szukając odpowiedniego atrybutu, ale nie mogę go znaleźć.

Jak mogę osiągnąć ten efekt? Musi to być możliwe, Visual Studio to robi i wierzę, że to ten sam komponent, a nie wyprowadzony i rozszerzony.

Dzięki! -Eric

Odpowiedz

38

Użyj DisplayNameAttribute aby zmienić to, co wyświetla tekst (uczynić go bardziej czytelny dla człowieka), przy czym DescriptionAttribute aby dodać tekst pomocy do nieruchomości, a CategoryAttribute do grupy właściwości ..

using System.ComponentModel; 

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

możesz również użyć atrybutu Opis, aby zapewnić dłuższy opis dla użytkownika. – JDunkerley

+0

Wielkie dzięki :) Lifesaver. +1 –

9

Będziemy chcieli mieć CategoryAttribute zestaw do „File” dla obu nieruchomości:

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

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

Polecam czytanie „Getting the most out of the .NET Property Grid Control” dla innych pomysłów można używać do organizowania swoich właściwości, w tym dodawanie opisów .

+1

Zrobiłeś przegap bit o wyświetlanej nazwie (przykład w mojej odpowiedzi, jeśli chcesz go dodać) –

+1

Tak, to rozwiązuje umieszczanie ich pod jednym drzewem, ale potrzebowałem atrybutu DisplayName z wybranej odpowiedzi. W każdym razie dzięki! : D –

Powiązane problemy