Как получить текстовое значение из ComboBox в WPF?
Это может быть что-то, покрытое C# 101, но я не смог найти простой для понимания ответ на этот вопрос в любом месте google или Stack overflow. Есть ли лучший способ вернуть текстовое значение из combobox без использования этой дерьмовой работы, которую я придумал?
private void test_site_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string cmbvalue = "";
cmbvalue = this.test_site.SelectedValue.ToString();
string[] cmbvalues = cmbvalue.Split(new char[] { ' ' });
MessageBox.Show(cmbvalues[1]);
}
пожалуйста, не ругайте меня, чтобы я действительно только что взял c# и OOP.
2 ответов
похоже, у вас есть ComboBoxItems в вашем ComboBox, так что SelectedValue возвращает ComboBoxItem и ToString поэтому возвращает что-то вроде ComboBox SomeValue
.
если это так, вы можете получить содержимое с помощью ComboBoxItem.Содержание:
ComboBoxItem selectedItem = (ComboBoxItem)(test_site.SelectedValue);
string value = (string)(selectedItem.Content);
однако лучший подход заключается в том, чтобы вместо заполнения ComboBox коллекцией ComboBoxItems установить ComboBox.ItemsSource к нужной коллекции строк:
test_site.ItemsSource = new string[] { "Alice", "Bob", "Carol" };
затем SelectedItem предоставит вам выбранную строку напрямую.
string selectedItem = (string)(test_site.SelectedItem);
о событиях нагрузку
DependencyPropertyDescriptor dpd = DependencyPropertyDescriptor.FromProperty(ComboBox.TextProperty, typeof(ComboBox));
dpd.AddValueChanged(cmbChungChi, OnTextChanged);
и получить текст через funtion
private void OnTextChanged(object sender, EventArgs args)
{
txtName.Text = cmbChungChi.Text;
}
удачи.