Domanda

Io sto usando un PropertyGrid per dimostrare le proprietà personalizzate che vengono esposti attraverso l'implementazione di ICustomTypeDescriptor.

I miei oggetti sono installati in una struttura ad albero e valori per ciascuna proprietà sono o impostata in ogni oggetto o ereditato da oggetti padre. Nella PropertyGrid voglio mostrare visivamente all'utente quali valori sono impostati nell'oggetto selezionato, e che vengono ereditate da oggetti principali.

In questo momento mi sto mostrando ogni proprietà esso due categorie. Un set mostra ciò che il valore è impostato nell'oggetto reale, con un campo vuoto se non impostato. L'altra serie mostra i valori delle proprietà assegnate all'oggetto che si sia impostata nell'oggetto, o ereditato se non impostato nell'oggetto.

Vorrei combinare questi due gruppi in un unico acquisto che mostra le proprietà impostate nel testo normale, e valori ereditati in corsivo. Tuttavia, non sembra essere un modo per farlo attraverso ICustomTypeDescriptor.GetProperties (). E non ho un facile accesso alle proprietà del PropertyGrid dal momento che vengono creati durante l'esecuzione del programma.

È stato utile?

Soluzione

Non si può fare il corsivo - ma si può fare in grassetto; il comportamento grassetto è determinato dalla PropertyDescriptor del ShouldSerializeValue; si può avvolgere PropertyDescriptors attraverso vari trucchi System.ComponentModel (ICustomTypeDescriptor, TypeConverter o TypeDescriptionProvider) e fornire il proprio PropertyDescriptor.

In alternativa, ci sono griglie simili con più opzioni, come ad esempio da VisualHint -. vedere "personalizzazione proprietà" a quella pagina

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top