无法将组合框中的值转换为整数
我试图获取在其处理程序中的组合框中选定的值,以便我可以根据每次更改的值执行一些操作。但我无法将该值转换为整数。当我尝试将其转换为字符串并将其打印在控制台上时,如果选择的值为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());
}
这是因为组合框填充一堆ComboBoxItem
对象,并且因为SelectedValuePath
未指定,所以SelectedValue
也将是一个<ComboBoxItem>
对象。
一个简单的方法来解决这个问题是对SelectedValuePath
设置为"Content"
属性:
<ComboBox x:Name="Scale"
SelectionChanged="Scale_SelectionChanged"
SelectedValuePath="Content" ...>
这样,SelectedValue
将指向所选项目的ComboBoxItem.Content
。
好吧,那真的很简单.. !!! :) –
您选择的对象投射到ComboboxItem,然后尝试用这个来解析“内容”到INT32:https://msdn.microsoft.com/de-de/library/f02979c7(v=vs.110).aspx
可能在这种情况下填充SelectedItem属性并且SelectedValue属性为NULL。 所以尝试这个
Console.WriteLine(Scale.SelectedItem.ToString());
[组合框的获取选择的值]的可能的复制(http://stackoverflow.com/questions/6901070/getting-selected-value-of-a-combobox) –
另见[ http://stackoverflow.com/a/4902454](http://stackoverflow.com/a/4902454)的解释。 –
WPF =绑定。不要像这样创建'ComboBoxItem'。不要从View获取值,而是直接从底层收集获取值,那么不需要任何投射。见例如[这个答案](http://stackoverflow.com/a/19632600/1997232),或[本教程](http://www.wpf-tutorial.com/list-controls/combobox-control/)。 – Sinatr