Haf*_*yat 4 c# wpf datagrid event-handling
我是wpf的新手; 我正在使用可编辑的comboBox(用于搜索目的).
更改ComboBox中的文本时,搜索结果将显示在数据网格下方.当选择数据网格中的任何行时,其值将显示在文本框中以进行编辑.
当我在组合框中写入内容时,相关的行显示在数据网格中,但是当我单击以选择一行时,应用程序会抛出一个nullreference exception.
当dataGrid刷新逻辑位于按钮单击后面时,我的应用程序正常工作.
dataGrid的"SelectionChange"事件的代码是:
private void CategoryRowSelected(object sender, System.Windows.Controls.SelectedCellsChangedEventArgs e)
{
ClearForm();
if(CategoryDataGrid.SelectedItem!=null)
{
categoryMember = CategoryDataGrid.SelectedItem as CategoryTbl; // value assigned to the object
// if (categoryMember != null)
CategoryName.Text = categoryMember.CategoryName; //Exception thrown on this statement
CategoryDescription.Text = categoryMember.CategoryDescription;
}
}
Run Code Online (Sandbox Code Playgroud)
和ComboBox的textChange事件的代码是:
private void RefreshDataGrid(object sender, System.Windows.Controls.TextChangedEventArgs e)
{
CategoryDataGrid.SelectedIndex = -1;
//CategoryDataGrid.ItemsSource = RefreshQuery;
CategoryDataGrid.ItemsSource= Admin.RefreshCategoryDataGrid(NameCombo.Text);
}
Run Code Online (Sandbox Code Playgroud)
CategoryName.Text = categoryMember.CategoryName; //Exception thrown on this statement
Run Code Online (Sandbox Code Playgroud)
这可能由于多种原因而发生 - 不仅仅因为它categoryMember是null.如果出现以下情况也会发生
categoryMember.CategoryName(CategoryName属性本身)返回null,因为TextBox.Text如果将值设置为,类似的属性会引发异常null.CategoryName (控制)是 null另外,我看到你有一个null检查(用于调试?),但它被注释掉了.如果CategoryDataGrid.SelectedItem不可分配CategoryTbl,您将categoryMember自己获得null .