Problèmes d'utilisation de ListBox et de la collection observable en tant que journal de débogage
-
06-07-2019 - |
Question
J'ai une zone de liste liée à une collection observable de modèle de vue:
Cela fonctionne bien, moins un petit accroc ... en supposant que la collection observable contient des chaînes, tout s’efface lorsque des entrées ayant des valeurs identiques sont ajoutées à la collection, quel est le meilleur moyen de gérer cela? Une structure personnalisée à la place de chaînes puis d'un modèle de données?
modifier: complètement oublié d'expliquer le comportement ... il sélectionne plusieurs valeurs lorsque je clique sur une seule entrée, toutes les autres valeurs avec le même texte sont sélectionnées.
La solution
Ce problème existe parce que c’est la nature du contrôle dérivé du sélecteur. Lorsque vous commencez à sélectionner un élément du type ObservableCollection et que votre collection contient des chaînes en double, le sélecteur est confus quant à l'élément sélectionné. Vous devez créer une nouvelle classe / structure simple et y placer votre chaîne.
public class Info
{
public string Name { get; set; }
}
// ..
MyList = new ObservableCollection<Info>(new List<Info> { new Info { Name = "Hello World" }, new Info { Name = "Hello World" }, new Info { Name = "Hello World" } });
et comme si.
<ListBox ItemsSource="{Binding MyList}" DisplayMemberPath="Name" />