IListSource und ToString() mit DataSource
-
05-07-2019 - |
Frage
Zuerst habe ich eine Listbox und setzen Sie DataSource auf eine MyObjectCollection
MyObjectCollection implementiert das Interface IListSource wich enthält MyObject ' s
MyObject hat die Methode
public override string ToString()
{
return "test";
}
Die Listbox zeigt nun "test" für jedes element in der MyObjectCollection.
Aber wenn ich die IListSource interface MyObject, zu.Die Listbox zeigt eine leere Zeichenfolge.Wie zu beheben, dass in der "MyObject-Klasse".Ein workaround ist, um es zu beheben, im Listenfeld Format-Ereignis, aber als alle GUI-Elemente hat, um diese Problemumgehung zu implementieren :/
Lösung
In der Regel, sollten die Dinge entweder Listen, oder sollte ein Unternehmen für verbindlich.Wenn es eine Liste (IList
oder IListSource
) dann, viel von der Daten-binding-API davon aus, dass Sie wirklich wollen (für einfach-Bindung Szenarien, d.h.eine Zeile) die erste Element aus der Unterliste.
Würde ich einfach ändern, so dass MyObject
nicht Umsetzung IListSource
, aber kapselt es, vielleicht setzen Sie es über einen Items
Eigenschaft.Man könnte auch schauen, ob eine benutzerdefinierte TypeConverter
funktionieren würde (ich werde später untersuchen...)