Получить выбранное значение 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"
Это должно быть очень просто, но я просто не могу заставить это работать или посмотреть, что не так?
Ответы
Ответ 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, поэтому вам нужно будет вручную передать этот элемент.