无法将组合框中的值转换为整数

问题描述:

我试图获取在其处理程序中的组合框中选定的值,以便我可以根据每次更改的值执行一些操作。但我无法将该值转换为整数。当我尝试将其转换为字符串并将其打印在控制台上时,如果选择的值为100000,则打印为“System.Windows.Controls.ComboBoxItem:100000”。无法将组合框中的值转换为整数

请在下面找到XAML和处理程序代码。

<ComboBox x:Name="Scale" HorizontalAlignment="Left" Margin="660,15,0,0" Grid.Row="1" VerticalAlignment="Top" Width="60" Height="26" SelectionChanged="Scale_SelectionChanged"> 
    <ComboBoxItem Content="1" HorizontalAlignment="Left" Width="60"/> 
    <ComboBoxItem Content="10" HorizontalAlignment="Left" Width="60"/> 
    <ComboBoxItem Content="50" HorizontalAlignment="Left" Width="60"/> 
    <ComboBoxItem Content="100" HorizontalAlignment="Left" Width="60"/> 
    <ComboBoxItem Content="200" HorizontalAlignment="Left" Width="60"/> 
    <ComboBoxItem Content="400" HorizontalAlignment="Left" Width="60"/> 
    <ComboBoxItem Content="500" HorizontalAlignment="Left" Width="60"/> 
    <ComboBoxItem Content="750" HorizontalAlignment="Left" Width="60"/> 
    <ComboBoxItem Content="1000" HorizontalAlignment="Left" Width="60"/> 
    <ComboBoxItem Content="2000" HorizontalAlignment="Left" Width="60"/> 
    <ComboBoxItem Content="4000" HorizontalAlignment="Left" Width="60"/> 
    <ComboBoxItem Content="5000" HorizontalAlignment="Left" Width="60"/> 
    <ComboBoxItem Content="10000" HorizontalAlignment="Left" Width="60"/> 
    <ComboBoxItem Content="20000" HorizontalAlignment="Left" Width="60"/> 
    <ComboBoxItem Content="40000" HorizontalAlignment="Left" Width="60"/> 
    <ComboBoxItem Content="50000" HorizontalAlignment="Left" Width="60"/> 
    <ComboBoxItem Content="100000" HorizontalAlignment="Left" Width="60"/> 
</ComboBox> 

C#代码

private void Scale_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    Console.WriteLine(Scale.SelectedValue.ToString()); 
} 
+1

[组合框的获取选择的值]的可能的复制(http://*.com/questions/6901070/getting-selected-value-of-a-combobox) –

+2

另见[ http://*.com/a/4902454](http://*.com/a/4902454)的解释。 –

+1

WPF =绑定。不要像这样创建'ComboBoxItem'。不要从View获取值,而是直接从底层收集获取值,那么不需要任何投射。见例如[这个答案](http://*.com/a/19632600/1997232),或[本教程](http://www.wpf-tutorial.com/list-controls/combobox-control/)。 – Sinatr

这是因为组合框填充一堆ComboBoxItem对象,并且因为SelectedValuePath未指定,所以SelectedValue也将是一个<ComboBoxItem>对象。

一个简单的方法来解决这个问题是对SelectedValuePath设置为"Content"属性:

<ComboBox x:Name="Scale" 
      SelectionChanged="Scale_SelectionChanged" 
      SelectedValuePath="Content" ...> 

这样,SelectedValue将指向所选项目的ComboBoxItem.Content

+0

好吧,那真的很简单.. !!! :) –

您选择的对象投射到ComboboxItem,然后尝试用这个来解析“内容”到INT32:https://msdn.microsoft.com/de-de/library/f02979c7(v=vs.110).aspx

可能在这种情况下填充SelectedItem属性并且SelectedValue属性为NULL。 所以尝试这个

Console.WriteLine(Scale.SelectedItem.ToString());