combobox tostring()返回对象而不是值

时间:2019-04-23 16:18:50

标签: c# wpf xaml combobox visual-studio-2017

我想检索在组合框中选择的字符串值并将其转换为整数,但是SelectedItem方法始终返回对象的名称。其他帖子建议使用SelectedItem的Content属性,但在使用.net 4.6.1的vs2017中我不可用。有人可以在不解析字符串的情况下帮助我获取值吗?

这是Xaml,后跟cs文件:

<ComboBox x:Name="Combo_BaudRate" SelectedValuePath="Content" 
          HorizontalAlignment="Left" VerticalAlignment="Top" 
          Width="120" Margin="112,81,0,0" 
          SelectionChanged="ComboBox_SelectionChanged" 
          IsReadOnly="True" >

        <ComboBoxItem Content="1200" />
        <ComboBoxItem Content="2400" />
        <ComboBoxItem Content="4800" />
        <ComboBoxItem Content="9600" />
        <ComboBoxItem Content="38400" />

</ComboBox>


private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    Selected_Port_Baudrate = Combo_BaudRate.SelectedItem.ToString(); 
}

1 个答案:

答案 0 :(得分:1)

SelectedItem上的

ComboBox返回第一个选定的ComboBoxItem

您要获取所选项目的属性值,而不是项目本身。因此,您应该结合使用SelectedValueSelectedValuePath来绑定属性值并将其转换为适当的类型:

int selectedBaudRate = int.Parse(Combo_BaudRate.SelectedValue.ToString());

请注意,SelectedValue的基础类型为string,因为您将ComboBoxItem属性Content指定为SelectedValuePath

如果您未同时设置SelectedValuePathSelectedValue,则SelectedValue将包含与SelectedItem相同的对象。