Подтвердить что ты не робот

Получить выбранное значение wpf combobox

Как получить выбранное значение (например, Option1) как string в моем примере ниже. Я пробовал множество предложений в Google, но не могу получить строку.

XAML:

<ComboBox x:Name="selectOption" Text="Select Option" 
                 SelectionChanged="selectOption_SelectionChanged" 
                 SelectedValue="{Binding VMselectedOption, Mode=TwoWay}" >
    <ComboBoxItem Name="cbb1">Option1</ComboBoxItem>
    <ComboBoxItem Name="cbb2">Option2</ComboBoxItem>
    <ComboBoxItem Name="cbb3">Option3</ComboBoxItem>
</ComboBox>

отделенного кода:

private void selectOption_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
   var selectedValue = selectOption.SelectedValue; 
}

//elsewhere in code
var test = viewModel.VMselectedOption;

Оба selectedValue и test возвращают строку " System.Windows.Controls.ComboBoxItem: Option1", а не " Option1"

Это должно быть очень просто, но я просто не могу заставить это работать или посмотреть, что не так?

4b9b3361

Ответ 1

Нельзя вставлять элементы со списком вручную. Установите их, используя ItemsSource.

В основном вы должны создать список опций (или объектов, представляющих параметры) и установить их как ItemsSource, таким образом ваш SelectedItem будет именно выбранным вариантом, а не автоматически созданной оберткой ComboboxItem.

Ответ 2

Вы должны установить SelectedValuePath = "Содержимое".

<ComboBox x:Name="selectOption" Text="Select Option" 
                 SelectionChanged="selectOption_SelectionChanged" 
                 SelectedValue="{Binding VMselectedOption, Mode=TwoWay}" 
                 SelectedValuePath="Content">
    <ComboBoxItem Name="cbb1">Option1</ComboBoxItem>
    <ComboBoxItem Name="cbb2">Option2</ComboBoxItem>
    <ComboBoxItem Name="cbb3">Option3</ComboBoxItem>
</ComboBox>

Ответ 3

string Value="";
if(myComboBox.SelectedIndex>=0) 
  Value=((ComboBoxItem)myComboBox.SelectedItem).Content.ToString();

Ответ 4

Обновите свой код, чтобы получить содержимое comboboxItem.

var selectedValue = ((ComboBoxItem)selectOption.SelectedItem).Content.ToString();

Ответ 5

ComboBoxItem.Content имеет тип Object, поэтому вам нужно будет вручную передать этот элемент.