2017-08-04 73 views
-2

我正在开发一个wpf应用程序,其中当用户在组合框上执行选择更改动作时,会触发选择更改事件,但在更新datagrid.itemsSource的事件处理程序中,会显示错误以使用新关键字通过断点创建对象,我已经看到,在事件处理程序中,datagrid对象本身为null,但它在MainWindow函数中不为null。为什么这样?无法在事件处理程序combobox_selectionChanged中访问datagrid.itemsSource?

private void majorkeys_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    {   
     minordata.ItemsSource = ReadLibrary.get_minor_records(majorkeys.SelectedValue.ToString(), minorkeys.SelectedValue.ToString()); 
    } 
+0

这可能是因为在InitializeComponent期间触发了SelectionChanged事件,而'minordata'字段尚未设置。 – Clemens

+0

你说得对! @Clemens – Sabeen

回答

0

让我回答我的问题,问题是,当组件被初始化,comboBox.selectedIndex变化,因此comboBox_selectionChanged事件当时没有填充我的DataGrid的ItemsSource时引发的,因此它是空的。我已经通过检查datagrid的itemsSource是否为null来解决问题。这里是代码,

private void minorkeys_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     if (minordata != null) 
     { 
      minordata.ItemsSource = ReadLibrary.get_minor_records(majorkeys.SelectedValue.ToString(), minorkeys.SelectedValue.ToString()); 
     } 
    } 

yay! :)

相关问题