Quelle est la façon la plus simple pour obtenir le texte sélectionné dans une liste déroulante contenant uniquement les entrées de texte?
Mon WPF ComboBox contient uniquement les entrées de texte. L'utilisateur pourra sélectionner un. Quelle est la façon la plus simple pour obtenir le texte de la sélection ComboBoxItem? Veuillez répondre en C# et Visual Basic. Voici ma ComboBox:
<ComboBox Name="cboPickOne">
<ComboBoxItem>This</ComboBoxItem>
<ComboBoxItem>should be</ComboBoxItem>
<ComboBoxItem>easier!</ComboBoxItem>
</ComboBox>
Par le chemin, je connais la réponse mais ce n'était pas facile à trouver. Je pensais que je poste la question pour aider les autres. RÉVISION: j'ai appris une meilleure réponse. En ajoutant SelectedValuePath="Contenu" comme une zone de liste déroulante attribut je n'ai plus besoin de laide code de casting. Voir Andy réponse ci-dessous.
- Si vous connaissez la réponse, n'hésitez pas à le poster aussi bien et de le marquer comme " la accepté de répondre. Pas besoin pour les autres à faire la même recherche à deux reprises. 😉 Et qui sait, peut-être quelqu'un peut trouver une meilleure solution basée sur votre travail...
- En ajoutant à ce commentaire, vous auriez facilement marqué à votre question dans la communauté wiki.
Vous devez vous connecter pour publier un commentaire.
Dans le code:
Juste pour clarifier Heinzi et Jim Brissom réponses voici le code dans
Visual Basic:
et C#:
Merci!
.Content
jeter une exception je pense.Si vous connaissez déjà le contenu de votre ComboBoxItem seulement vont être des chaînes de caractères, il suffit d'accéder au contenu de la chaîne:
Si vous ajoutez des éléments dans la zone de liste déroulante comme
Puis utilisez ceci:
Mais si vous ajoutez des éléments par liaison de données, utilisez ceci:
J'ai juste fait ce.
À l'aide de
cboPickOne.Text
devrait vous donner de la chaîne.Puisque nous savoir que le contenu est une chaîne, je préfère un plâtre sur une
ToString()
appel de méthode.DirectCast(...)
faire?Utiliser le
DataRowView.Row.Item[Index]
ouItemArray[Index]
propriété afin d'obtenir l'SelectedItem
, où l'Index est l'index de la colonne dans laDataTable
utilisé commeitemSource
pour la zone de liste déroulante. Dans votre cas, il sera de 0. Au lieu de l'index, vous pouvez également passer le nom de la Colonne aussi:VB:
C#
Pour obtenir le SelectedValue vous pouvez utiliser:
VB:
C#
ComboBox
sont de typeDataRowView
.