Domanda

Sto cercando di aggiungere una proprietà a un tipo utilizzando TypeDescriptor.CreateProperty per visualizzare una proprietà aggiuntiva in una griglia di proprietà, tuttavia questa nuova proprietà non viene aggiunta e quando chiamo TypeDescriptor.GetProperties su quel tipo per ispezionare le proprietà , questa proprietà non esiste.

C'è qualcosa che potrei mancare o trascurare? Questo è uno scenario semplice e di base per quanto mi ricordo.

Ecco la chiamata: TypeDescriptor.CreateProperty (typeof (MovieMenuItem), " ExternalMediaLocation " ;, typeof (string), null);

È stato utile?

Soluzione

CreateProperty ti restituisce un PropertyDescriptor basato sulla riflessione per il tipo in questione (non è AddProperty , ad esempio). Qual è lo scenario qui? Se hai solo bisogno di visualizzare dati extra in DataGridView , l'opzione più semplice è semplicemente aggiungere una colonna non associata extra alla griglia.

Puoi puoi estendere i tipi in fase di esecuzione, ma per gli elenchi hai due opzioni principali:

  • ITypedList (se ogni istanza dell'elenco può avere colonne diverse) - vedi questa risposta
  • TypeDescriptionProvider : consente di aggiungere proprietà personalizzate per tipo (alla fine si riduce a scrivere un PropertyDescriptor , proprio come il primo esempio - ma diversi hook)

Le regole complete su come recuperare i metadati basati su elenchi sono in questa risposta

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