IListSource e ToString () con DataSource
-
05-07-2019 - |
Domanda
Per prima cosa ho una Listbox e ho impostato DataSource su MyObjectCollection
MyObjectCollection implementa l'interfaccia IListSource che contiene MyObject
MyObject ha il metodo
public override string ToString()
{
return "test";
}
La casella di riepilogo ora visualizza " test " per ogni elemento in MyObjectCollection.
Ma se applico anche l'interfaccia IListSource a MyObject. La casella di riepilogo mostra una stringa vuota. Come risolverlo in " MyObject " classe. Una soluzione alternativa consiste nel risolverlo nell'evento Formato casella di riepilogo, ma ogni elemento della GUI deve implementare questa soluzione alternativa: /
Soluzione
In generale, le cose dovrebbero essere o liste, o dovrebbero essere un'entità vincolante. Se si tratta di un elenco ( IList
o IListSource
), la maggior parte dell'API di associazione dei dati supporrà che tu voglia (per scenari di associazione semplice, ovvero una riga) la < em> primo elemento dell'elenco secondario.
Lo cambierei semplicemente in modo che MyObject
non implementa IListSource
, ma incapsula , forse esponendolo tramite una proprietà Items
. Puoi anche verificare se un TypeConverter
personalizzato funzionerebbe (esaminerò ...)