Problemi nell'utilizzo di ListBox e raccolta osservabile come registro di debug
-
06-07-2019 - |
Domanda
Ho una casella di riepilogo associata a una raccolta osservabile del modello di visualizzazione:
Funziona bene, meno un piccolo intoppo ... supponendo che la raccolta osservabile contenga stringhe, il tutto si rompe quando voci con valori identici vengono aggiunte alla raccolta, qual è il modo migliore per gestirlo? Strutt personalizzata anziché stringhe e quindi una piastra dati?
modifica: completamente dimenticato di spiegare il comportamento ... seleziona più valori quando faccio clic su una singola voce, vengono selezionati tutti gli altri valori con lo stesso testo.
Soluzione
Questo problema esiste perché è la natura del controllo derivato dal Selettore. Quando inizi a selezionare un elemento dal tipo ObservableCollection e la tua raccolta contiene stringhe duplicate, il selettore è confuso su quale elemento ha selezionato. Devi creare una nuova classe / struttura semplice e inserire la stringa.
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" } });
e così.
<ListBox ItemsSource="{Binding MyList}" DisplayMemberPath="Name" />