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

时间:2016-09-27 14:26:04

标签: c# wpf combobox

我正在尝试获取在其处理程序中的组合框中选择的值,以便我可以根据值的每次更改执行一些操作。但是我无法将值转换为整数。当我尝试将其转换为字符串并在控制台上打印时,如果所选值为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());
}

2 个答案:

答案 0 :(得分:0)

这是因为ComboBox充满了一堆ComboBoxItem个对象,并且由于未指定SelectedValuePathSelectedValue也将是<ComboBoxItem>个对象。

一种简单的解决方法是将SelectedValuePath设置为"Content"属性:

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

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

答案 1 :(得分:-1)

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

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