C# 从列表框中删除时出现NullReferenceException
在我的程序中,我有一个C# 从列表框中删除时出现NullReferenceException,c#,wpf,mvvm,listbox,nullreferenceexception,C#,Wpf,Mvvm,Listbox,Nullreferenceexception,在我的程序中,我有一个列表框,由用户填充项目。拥有ListBox的用户控件是用MVVM样式编写的 在数据模型内部,ListBox具有一个SelectedCommand属性,该属性更改模型中的某些值(进而更改视图)。我还有一个“删除”按钮,可以删除这个选中的项目 在删除SelectedCommand时,我收到一个NullReferenceException,我猜这是由于我的SelectedCommand属性是如何编写的。我相信问题以及如何解决对你们来说是显而易见的,但对我来说不是 Selected
列表框
,由用户填充项目。拥有ListBox
的用户控件是用MVVM样式编写的
在数据模型内部,ListBox
具有一个SelectedCommand
属性,该属性更改模型中的某些值(进而更改视图)。我还有一个“删除”按钮,可以删除这个选中的项目
在删除SelectedCommand
时,我收到一个NullReferenceException
,我猜这是由于我的SelectedCommand
属性是如何编写的。我相信问题以及如何解决对你们来说是显而易见的,但对我来说不是
SelectedCommand
数据模型中的属性:
public MyCommandDefinition SelectedCommand
{
get { return _selectedCommand; }
set
{
_selectedCommand = value;
NotifyPropertyChange(() => SelectedCommand);
if (SelectedCommand.DisplayName == _setOutput) //**NullReferenceException on this line!
{
//Commands to change values in model
}
if(...) { ... }
}
}
异常框显示“对象引用未设置为对象的实例”。我认为问题在于SelectedCommand
一旦从列表中删除,就会变成null
。如果我正在进行依赖于所选内容的数据操作,那么如何解决此问题
谢谢。您的
值
为null
。你需要以某种方式解释这种情况。这里有一个解决方案:
public MyCommandDefinition SelectedCommand
{
get { return _selectedCommand; }
set
{
_selectedCommand = value;
NotifyPropertyChange(() => SelectedCommand);
if (SelectedCommand != null && SelectedCommand.DisplayName == _setOutput)
{
//Commands to change values in model
}
if(...) { ... }
}
}
我遇到了类似的问题并找到了解决方法,这是由于无法在ItemCheck事件中删除当前项造成的:
private void myList_ItemCheck(object sender, ItemCheckEventArgs e)
{
// This should work
BeginInvoke((MethodInvoker)delegate()
{
myList.Items.Remove(myItem);
});
}
如果值为null,则返回
似乎不是一个好主意。如果选择了命令,为什么不直接使用null&&SelectedCommand.DisplayName==\u setOutput
…@geng:请立即检查。
private void myList_ItemCheck(object sender, ItemCheckEventArgs e)
{
// This should work
BeginInvoke((MethodInvoker)delegate()
{
myList.Items.Remove(myItem);
});
}