System.NullReferenceException尝试设置TextBox值时

时间:2016-01-24 21:22:40

标签: c# wpf xaml uwp

我的代码中有一个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();
    }

1 个答案:

答案 0 :(得分:2)

IsSelected中删除ComboBoxItem属性,它可以正常运行。然后,您可以在初始化后设置ComboBox.SelectedIndex。我不熟悉XAML的渲染方式,但我认为它会在SelectionChanged渲染之前触发TextBlock事件。通过使用Grid列而不是StackPanel,并将TextBlock放在XAML中(但位于比ComboBox更高的列中),可以观察到这种情况;它工作得很好。此外,如果您发现TextBlock的{​​{1}}事件,您可以看到原始代码中首先点击了Loaded事件。