SelectedIndex是一个空引用异常?

Jar*_*ner 3 c# visual-studio-2010 nullreferenceexception silverlight-4.0

我一直收到这个错误:

System.NullReferenceException was unhandled by user code
  Message=[Arg_NullReferenceException]
Arguments: 
Debugging resource strings are unavailable. Often the key and arguments provide sufficient information to diagnose the problem. See http://go.microsoft.com/fwlink/?linkid=106663&Version=5.0.60401.00&File=mscorlib.dll&Key=Arg_NullReferenceException
  StackTrace:
       at Jantire.DoHomeworkView.TextAlignment_combobox_SelectionChanged(Object sender, SelectionChangedEventArgs e)
       at System.Windows.Controls.Primitives.Selector.OnSelectionChanged(SelectionChangedEventArgs e)
       at System.Windows.Controls.Primitives.Selector.InvokeSelectionChanged(List`1 unselectedItems, List`1 selectedItems)
       at System.Windows.Controls.Primitives.Selector.SelectionChanger.End()
       at System.Windows.Controls.Primitives.Selector.OnItemsChanged(NotifyCollectionChangedEventArgs e)
       at System.Windows.Controls.ItemsControl.OnItemCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
       at System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
       at System.Windows.Controls.ItemCollection.NotifyCollectionChanged(NotifyCollectionChangedEventArgs e)
       at System.Windows.Controls.ItemCollection.NotifyCollectionReady()
       at System.Windows.Controls.ItemsControl.NotifyAllItemsAdded(IntPtr nativeItemsControl)
  InnerException: 
Run Code Online (Sandbox Code Playgroud)

在代码:

private void TextAlignment_combobox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            //This next line is where error is at
            if (TextAlignment_combobox.SelectedIndex == 0)
            {
                EssayContents_richtextbox.Selection.ApplyPropertyValue(Paragraph.TextAlignmentProperty,  TextAlignment.Left);
            }
            if (TextAlignment_combobox.SelectedIndex == 1)
            {
                EssayContents_richtextbox.Selection.ApplyPropertyValue(Paragraph.TextAlignmentProperty, TextAlignment.Center);
            }
            if (TextAlignment_combobox.SelectedIndex == 2)
            {
                EssayContents_richtextbox.Selection.ApplyPropertyValue(Paragraph.TextAlignmentProperty, TextAlignment.Right);
            }
        }
Run Code Online (Sandbox Code Playgroud)

使用XAML:

<ComboBox Width="128" x:Name="TextAlignment_combobox" SelectionChanged="TextAlignment_combobox_SelectionChanged" ToolTipService.ToolTip="Text Alignment">
                <ComboBoxItem Name="LeftAlignment_comboboxitem" Content="Left Alignment" IsSelected="True"/>
                <ComboBoxItem Name="CenterAlignment_comboboxitem" Content="Center Alignment"/>
                <ComboBoxItem Name="RightAlignment_comboboxitem" Content="Right Alignment"/>
            </ComboBox>
Run Code Online (Sandbox Code Playgroud)

IAm*_*rey 5

好的,我已经测试了这个场景,我找到了你的问题.当您最初触发WPF应用程序时,它将运行SelectionChanged事件.只要创建了ComboBox对象,就会发生这种情况.问题是,在您的WPF应用程序中,您在RichTextBox之前的XAML中有ComboBox.这意味着此事件在创建RichTextBox之前触发.因此,您将获得Null引用异常.你有两个选择.您可以在尝试对其进行操作之前尝试使用错误或尝试确定RichTextBox是否存在,或者您可以将XAML中的RichTextBox移动到ComboBox上方.这与表单放置无关,而是与XAML中的位置无关.任何一个都可以解决您的问题.