Comment puis-je obtenir la valeur de texte d’un ComboBox dans WPF?

C’est peut-être quelque chose qui est couvert dans C # 101 mais je n’ai pas pu trouver de réponse facile à comprendre à cette question où que ce soit sur Google ou un débordement de stack. Existe-t-il un meilleur moyen de retourner une valeur de texte à partir d’une liste déroulante sans utiliser ce travail de merde que j’ai créé?

private void test_site_SelectionChanged(object sender, SelectionChangedEventArgs e) { ssortingng cmbvalue = ""; cmbvalue = this.test_site.SelectedValue.ToSsortingng(); ssortingng[] cmbvalues = cmbvalue.Split(new char[] { ' ' }); MessageBox.Show(cmbvalues[1]); } 

S’il vous plait, ne vous énervez pas trop, je viens juste de prendre c # et OOP.

On dirait que vous avez ComboBoxItems dans votre ComboBox, de sorte que SelectedValue renvoie un ComboBoxItem et que ToSsortingng renvoie par conséquent quelque chose comme ComboBox SomeValue .

Si c’est le cas, vous pouvez obtenir le contenu en utilisant ComboBoxItem.Content:

 ComboBoxItem selectedItem = (ComboBoxItem)(test_site.SelectedValue); ssortingng value = (ssortingng)(selectedItem.Content); 

Au lieu de renseigner ComboBox avec une collection de ComboBoxItems, une meilleure approche consiste à définir ComboBox.ItemsSource sur la collection de chaînes souhaitée:

 test_site.ItemsSource = new ssortingng[] { "Alice", "Bob", "Carol" }; 

Ensuite, SelectedItem vous obtiendrez directement la chaîne actuellement sélectionnée.

 ssortingng selectedItem = (ssortingng)(test_site.SelectedItem); 

Sur les événements de charge mis

 DependencyPropertyDescriptor dpd = DependencyPropertyDescriptor.FromProperty(ComboBox.TextProperty, typeof(ComboBox)); dpd.AddValueChanged(cmbChungChi, OnTextChanged); 

Et recevez du texte via funtion

 private void OnTextChanged(object sender, EventArgs args) { txtName.Text = cmbChungChi.Text; } 

Bonne chance.