我正在尝试获取在其处理程序中的组合框中选择的值,以便我可以根据值的每次更改执行一些操作。但是我无法将值转换为整数。当我尝试将其转换为字符串并在控制台上打印时,如果所选值为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());
}
答案 0 :(得分:0)
这是因为ComboBox充满了一堆ComboBoxItem
个对象,并且由于未指定SelectedValuePath
,SelectedValue
也将是<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());