Comment lier une zone de liste déroulante à une Liste générique avec une profonde DisplayMember et ValueMember propriétés?
Je suis en train de lier une liste générique comme la Liste des Parents d'une zone de liste déroulante.
public Form1()
{
InitializeComponent();
List<Parent> parents = new List<Parent>();
Parent p = new Parent();
p.child = new Child();
p.child.DisplayMember="SHOW THIS";
p.child.ValueMember = 666;
parents.Add(p);
comboBox1.DisplayMember = "child.DisplayMember";
comboBox1.ValueMember = "child.ValueMember";
comboBox1.DataSource = parents;
}
}
public class Parent
{
public Child child { get; set; }
}
public class Child
{
public string DisplayMember { get; set; }
public int ValueMember { get; set; }
}
Quand je lance mon appli de test, je ne vois que: "ComboBindingToListTest.Parent" qui apparaît dans ma liste déroulante au lieu de "MONTRER CE".
Comment puis-je lier une zone de liste déroulante à une Liste Générique d'un niveau ou profonde, par exemple, les propriétés de l'enfant.DisplayMember??
Merci d'Avance,
Adolfo
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que vous pouvez faire ce que vous ar tenter. Le dessin ci-dessus montre qu'un Parent ne peut avoir qu'un enfant. Est-ce vrai? Ou avez-vous simplifié la conception pour le but de cette question.
Ce que je recommande, indépendamment du fait que les parents peuvent avoir plusieurs enfants, c'est que vous utilisez un type anonyme comme Source de Données pour la zone de liste déroulante, et remplir ce type à l'aide de linq. Voici un exemple:
Qui fera le travail:
Si les Enfants a été dans une classe parent, alors vous pouvez simplement utiliser:
Toutefois, si vous avez besoin de se lier à des enfants de plusieurs parents, vous pouvez effectuer les opérations suivantes:
Vous pouvez simplement intercepter la source de données d'événements de changement et faire l'objet spécifique des liaisons de là.