Question

D'abord, j'ai une zone de liste et je définis le DataSource sur un MyObjectCollection

MyObjectCollection implémente l'interface IListSource qui contient les informations de MyObject

MyObject a la méthode

public override string ToString()
{
    return "test";
}

La zone de liste affiche maintenant le message " test " pour chaque élément de la MyObjectCollection.

Mais si j'applique l'interface IListSource à MyObject également. La zone de liste affiche une chaîne vide. Comment résoudre ce problème dans " MonObjet " classe. Une solution de contournement consiste à résoudre le problème dans l'événement Format de la boîte aux lettres, mais chaque élément de l'interface graphique doit implémenter cette solution de contournement: /

Était-ce utile?

La solution

En règle générale, les éléments doivent être des listes, ou doivent constituer une entité de liaison. S'il s'agit d'une liste ( IList ou IListSource ), une grande partie de l'API de liaison de données supposera que vous souhaitez réellement (pour les scénarios de liaison simple, par exemple une ligne) le < em> premier élément de la sous-liste.

Je voudrais simplement le changer pour que MyObject ne mette pas en œuvre IListSource , mais l'encapsule , peut-être l'exposer via une propriété Items . Vous pouvez également voir si un TypeConverter personnalisé fonctionnerait (je vais étudier ...)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top