Как я могу получить текстовое значение из ComboBox в WPF? - PullRequest
7 голосов
/ 27 февраля 2010

Это может быть что-то, что описано в C # 101, но я не смог найти простой для понимания ответ на этот вопрос в Google или переполнении стека. Есть ли лучший способ вернуть текстовое значение из выпадающего списка, не используя эту дурацкую работу, которую я придумал?

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 # и ООП.

Ответы [ 2 ]

13 голосов
/ 27 февраля 2010

Похоже, у вас есть ComboBoxItems в вашем ComboBox, так что SelectedValue возвращает ComboBoxItem, и поэтому ToString возвращает что-то вроде ComboBox SomeValue.

Если это так, вы можете получить содержимое с помощью ComboBoxItem.Content:

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);
1 голос
/ 11 мая 2015

При загрузке событий ставить

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

dpd.AddValueChanged(cmbChungChi, OnTextChanged);

И получить текст через функцию

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

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...