Vérifier si une zone de liste déroulante Contient l'Élément
J'ai ceci:
<ComboBox SelectedValuePath="Content" x:Name="cb">
<ComboBoxItem>Combo</ComboBoxItem>
<ComboBoxItem>Box</ComboBoxItem>
<ComboBoxItem>Item</ComboBoxItem>
</ComboBox>
Si j'utilise
cb.Items.Contains("Combo")
ou
cb.Items.Contains(new ComboBoxItem {Content = "Combo"})
il retourne False
.
Quelqu'un peut me dire comment puis-je vérifier si un ComboBoxItem
nommé Combo
existe dans le ComboBox
cb
?
La zone de liste déroulante n'ont pas de noms alors, comment êtes-vous référence?
Il est préférable de poster le code qui reproduit le problème.
Si vous êtes à la recherche de vitesse, puis lier la source d'un HashSet de la chaîne et de tester si le HashSet contient la chaîne de caractères. Si vous avez besoin d'dynamique des insertions et des suppressions puis ObservableCollection. À l'aide de la liste déroulante que la collection n'est pas optimale.
Ne pouvez pas utiliser un
Il est préférable de poster le code qui reproduit le problème.
Si vous êtes à la recherche de vitesse, puis lier la source d'un HashSet de la chaîne et de tester si le HashSet contient la chaîne de caractères. Si vous avez besoin d'dynamique des insertions et des suppressions puis ObservableCollection. À l'aide de la liste déroulante que la collection n'est pas optimale.
Ne pouvez pas utiliser un
HashSet
depuis que je suis le style de certains des ComboBoxItem
s.OriginalL'auteur Elmo | 2013-08-10
Vous devez vous connecter pour publier un commentaire.
Éléments est un
ItemCollection
etnot list of strings
. Dans votre cas, son uncollection of ComboboxItem
et vous avez besoin de vérifier sonContent
propriété.OU
Vous pouvez faire une boucle sur chaque élément et le break dans le cas où vous avez trouvé l'élément souhaité -
Je dois le faire plusieurs fois par seconde. Ralentit le GUI.
Je n'ai pas l'obtenir.
Contains
aussi à l'intérieur des boucles sur l'ensemble de la liste jusqu'à ce qu'il trouve un élément souhaité.Oui vous pouvez utiliser
OfType
en place deCast
.Mis à jour avec une autre approche.
OriginalL'auteur Rohit Vats
Si vous souhaitez utiliser le
Contains
de la fonction que danscb.Items.Contains("Combo")
vous devez ajouter des chaînes à votre zone de liste déroulante, pas ComboBoxItems:cb.Items.Add("Combo")
. La chaîne va s'afficher comme un ComboBoxItem.OriginalL'auteur Ming Slogar