我的代码中有一个ComboBox,我试图获取所选项的值并将其写入TextBlock。在运行代码时,我得到了一个类型为' System.NullReferenceException'的例外。我做错了什么?这是我的设计
<StackPanel Orientation="Horizontal" >
<ComboBox SelectionChanged="ComboBox_SelectionChanged">
<ComboBoxItem Content="First" IsSelected="True"/>
<ComboBoxItem Content="Second"/>
<ComboBoxItem Content="Third"/>
</ComboBox>
<TextBlock Name="comboResult" />
</StackPanel>
这是我的代码
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ComboBox cb=(ComboBox)sender;
ComboBoxItem cbi = (ComboBoxItem)cb.SelectedItem;
comboResult.Text = cbi.Content.ToString();
}
答案 0 :(得分:2)
从IsSelected
中删除ComboBoxItem
属性,它可以正常运行。然后,您可以在初始化后设置ComboBox.SelectedIndex
。我不熟悉XAML的渲染方式,但我认为它会在SelectionChanged
渲染之前触发TextBlock
事件。通过使用Grid
列而不是StackPanel
,并将TextBlock
放在XAML中(但位于比ComboBox
更高的列中),可以观察到这种情况;它工作得很好。此外,如果您发现TextBlock
的{{1}}事件,您可以看到原始代码中首先点击了Loaded
事件。