Effacer une zone de liste déroulante dans WPF
Comment puis-je supprimer une zone de liste déroulante dans WPF? J'ai essayé ce code:
private void btClear1_Click(object sender, RoutedEventArgs e)
{
txtID.Text = String.Empty;
this.cbType.SelectedItem = -1;
}
cbType.Éléments.Est-ce clair ?
Clair comme de l'en retirer tous les éléments, ou claire que dans d'effacer la sélection?
Effacer la sélection
Au lieu de selectedItem vous pourriez mettre la propriété SelectedIndex=-1. De toute façon, les réponses de @Fred sont le plus correct 😉
Quant à Fred du commentaire ci-dessus, cela dépend vraiment si la
Clair comme de l'en retirer tous les éléments, ou claire que dans d'effacer la sélection?
Effacer la sélection
Au lieu de selectedItem vous pourriez mettre la propriété SelectedIndex=-1. De toute façon, les réponses de @Fred sont le plus correct 😉
Quant à Fred du commentaire ci-dessus, cela dépend vraiment si la
ComboBox
est rempli par le simple ajout d'un ComboBoxItem
-soit en XAML ou dynamique, ou si elle a été remplie par la liaison à la ItemsSource
. Si vous utilisez ce dernier, vous ne pouvez pas faire cbType.Items.Clear()
-- vous obtenez: Operation is not valid while ItemSource is in use. Access and modify elements with ItemsControl.ItemsSource instead.
. La question a vraiment besoin d'inclure la façon dont les éléments sont placés dans la boîte, en premier lieu.OriginalL'auteur user2631662 | 2013-10-14
Vous devez vous connecter pour publier un commentaire.
Pour effacer le jeu de sélection de la
SelectedIndex
pas leSelectedItem
Vous pouvez définir la
SelectedItem
ouSelectedValue
ainsi, mais le changer ànull
au lieu de -1 (ces point d'un objet n'est pas un entier).Changer votre
SelectionChanged
événement pour vérifier la valeur null avant d'essayer de faire des choses à la liste déroulante de la boîte de l'élément sélectionnécomment puis-je faire cela
Je soupçonne que dans votre
SelectionChanged
cas où vous êtes l'invocation d'une méthode sur leSelectedItem
de la boîte combo (peut-êtrecboType.SelectedItem.ToString()
). Ceci lancera une référence null si aucun élément n'est sélectionné, alors il suffit d'ajouter une condition au sommet de cette méthode qui dit que si (cboType.SelectedItem == null) return;OriginalL'auteur Kevin DiTraglia
cbTypion.SelectedItem = -1
pour effacer la sélectioncbType.Items.Clear()
pour effacer tous les élémentsClearSelection()
. Peut-être à partir d'ASP ou de quelque chose?Je suis corrigé! Son été un moment depuis que j'ai develped WPF. Oui, il est disponible dans ASP.NET. Réponse de mise à jour.
Cela dépend vraiment si la
ComboBox
est rempli par le simple ajout d'unComboBoxItem
-soit en XAML ou dynamique, ou si elle a été remplie par la liaison à laItemsSource
. Si vous utilisez ce dernier, vous ne pouvez pas fairecbType.Items.Clear()
-- vous obtenez:Operation is not valid while ItemSource is in use. Access and modify elements with ItemsControl.ItemsSource instead.
.OriginalL'auteur Fred
Vous pouvez réinitialiser la liste déroulante en liaison dans le code XAML de la page.
Par exemple, dans cette zone de liste déroulante du champ dans le code XAML de la page:
Puis dans
ViewModelPage
:OriginalL'auteur Sabareeshwari Kannan
Totalement de compensation des éléments de la zone de
Pour les Googlers, puisque le titre est trompeur, si nous parlions de compensation les éléments de la boîte, j'ai vu plusieurs réponses de dire d'utiliser
cbType.Items.Clear()
. Il dépend de la façon dont les éléments ont été chargés. Vous pourriez avoir codé en dur dans le code XAML, a ajouté avec une fonction dynamiquement à l'exécution, a utilisé un type de liaison de données et/ou les chargés de la.ItemSource
. Il sera le même pour tous, mais le dernier cas.Lorsque vous utilisez le
.ItemSource
pour charger leComboBox
par l'intermédiaire d'un DataTable estDefaultView
, par exemple, vous ne pouvez pas simplement fairecbType.Items.Clear()
. Puisque la méthode de remplissage de la liste déroulante n'a pas été inclus dans la question, je pense que lorsque vous définissez la.ItemSource
, vous devez faire:cbType.ItemsSource = null;
à la place. Sinon, si vous essayez
cbType.Items.Clear()
vous obtiendrez:De compensation de l'élément sélectionné
Je suis retourné et a vu l'OP commentaire, disant que l'on souhaite effacer la sélection, pas de la case. Pour cela, les autres réponses stand:
OriginalL'auteur vapcguy