2010-02-27 2 views
6

Dies ist vielleicht etwas, das in C# 101 behandelt wird, aber ich konnte keine leicht verständliche Antwort auf diese Frage irgendwo auf Google oder Stapelüberlauf finden. Gibt es eine bessere Möglichkeit, einen Textwert aus einer Combobox zurückzugeben, ohne diese beschissene Arbeit zu verwenden?Wie bekomme ich den Textwert von einer ComboBox in WPF?

Bitte schiebe nicht auf mich zu hart Ich bin wirklich gerade jetzt abholen C# und OOP.

Antwort

11

Es sieht so aus, als ob Sie ComboBoxItems in Ihrer ComboBox haben, so dass SelectedValue ein ComboBoxItem zurückgibt und ToString daher etwas wie ComboBox SomeValue zurückgibt.

Wenn das der Fall ist, können Sie den Inhalt mit ComboBoxItem.Content erhalten:

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

jedoch ein besserer Ansatz ist es, anstatt die ComboBox mit einer Sammlung von ComboBoxItems bevölkern, setzen ComboBox.ItemsSource zu die gewünschte Zeichenkette:

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

Dann SelectedItem wird Ihnen die aktuell ausgewählte Zeichenfolge direkt erhalten.

string selectedItem = (string)(test_site.SelectedItem); 
+0

Erster Vorschlag throughs-Ausnahme: Das Objekt des Typs 'System.Windows.Controls.ListBoxItem' konnte nicht in den Typ 'System.Windows.Controls.ComboBoxItem' umgewandelt werden. – Akers

+1

Zweite Vorschlag funktioniert super! Vielen Dank! – Akers

1

Auf Last Ereignisse setzen

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

dpd.AddValueChanged(cmbChungChi, OnTextChanged); 

Und Text erhalten über funtion

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

Viel Glück.