如何从下面的示例中将所选值(例如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 ”
这应该非常简单,但我不能让这个工作或者看错了什么?
答案 0 :(得分:21)
您应该设置SelectedValuePath =&#34;内容&#34;。
<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>
答案 1 :(得分:13)
您不应手动插入组合框项目。使用ItemsSource
设置它们。
基本上你应该创建一个选项列表(或代表选项的对象)并将它们设置为ItemsSource
,这样你的SelectedItem
将是所选择的选项,而不是自动创建的包裹{ {1}}。
答案 2 :(得分:8)
string Value="";
if(myComboBox.SelectedIndex>=0)
Value=((ComboBoxItem)myComboBox.SelectedItem).Content.ToString();
答案 3 :(得分:7)
更新您的代码以获取comboboxItem的内容。
var selectedValue = ((ComboBoxItem)selectOption.SelectedItem).Content.ToString();
答案 4 :(得分:2)
ComboBoxItem.Content属于Object类型,因此您需要自己投射该项目。