2015-11-18 7 views
1

У меня есть COMBOX в моем приложении WPF с тремя пунктами:Не удается получить выделенный текст или значение в ComboBox

<ComboBoxItem Tag="some value">Text</ComboBoxItem> 
<ComboBoxItem Tag="some value2">Text2</ComboBoxItem> 
<ComboBoxItem Tag="some value3">Text3</ComboBoxItem> 

Я хочу, чтобы получить выделенный текст или значение во время выполнения. Когда я делаю это:

myComboBox.SelectedValue.ToString() 

возвращает это:

System.Windows.Controls.ComboBoxItem: Text2 

Как я могу получить выделенный текст или значение?

ответ

2

Потому что вы хотите Content свойство ComboBoxItem вы должны попробовать, как это:

(myComboBox.SelectedValue as ComboBoxItem).Content.ToString(); 

Или Tag:

(myComboBox.SelectedValue as ComboBoxItem).Tag.ToString(); 
1

вам необходимо передать свойство SelectedItem Combobox в объект, затем вы можете получить доступ к свойствам. Поэтому в вашем случае вам нужно отправить его в ComboBoxItem.

+0

Как получить стоимость? –

+0

((YourType) comboBox.SelectedItem). Ваш продукт –

-1

Попробуйте

<ComboBox Name="comboBox" SelectedValuePath="Content"> 
    <ComboBoxItem>text</ComboBoxItem> 
    <ComboBoxItem>here</ComboBoxItem> 
    <ComboBoxItem>text</ComboBoxItem> 
</ComboBox> 

Получить значение

var value = comboBox.SelectedValue.ToString() 
+0

Комментарий Downvoter – Sybren

0

Вам просто нужно получить ярлык от объекта.

<ComboBox SelectionChanged="Selector_OnSelectionChanged"> 
    <ComboBoxItem Tag="some value">Text</ComboBoxItem> 
    <ComboBoxItem Tag="some value2">Text2</ComboBoxItem> 
    <ComboBoxItem Tag="some value3">Text3</ComboBoxItem> 
</ComboBox> 

    private void Selector_OnSelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     var cb = sender as ComboBox; 
     if (cb == null) 
     { 
      return; 
     } 

     var selectedItem = cb.SelectedValue as ComboBoxItem; 
     if (selectedItem == null) 
     { 
      return; 
     } 

     var tag = selectedItem.Tag; 

     Debug.WriteLine(tag); 
    } 
Смежные вопросы