我有一个非常简单的类,它有一个属性并且继承了INotifyPropertyChanged:
class SimpleClass:INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _property;
public string Property
{
get { return _property; }
set
{
_property = value;
PropertyChanged(this, new PropertyChangedEventArgs"Property"));
}
}
}
我尝试在WPF窗口的构造函数中实例化一个SimpleClass对象,但是我得到以下TargetInvocationException:“调用的目标抛出了异常”。 如果我删除INotifyPropertyChange继承(以及对PropertyChanged事件的任何引用),那么我没有得到错误,我的项目运行没有任何问题。有什么想法吗?
干杯
答案 0 :(得分:4)
您没有在PropertyChanged
上检查是否为空。
如果没有人在听,那么它将为空。大多数人都会保护事件听众在活动期间改变:
var listeners = PropertyChanged;
if (listeners != null)
listeners(this, new PropertyChangedEventArgs("Property");
答案 1 :(得分:1)
此代码中没有任何内容显然导致该错误。我们需要更多信息以确定发生了什么。但是,您提供的有关INotifyPropertyChanged的提示让我相信它的PropertyChanged事件为空,并且您没有对它进行空检查。您需要添加空检查:
set
{
_property = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs"Property"));
}
或确保事件永远不为空:
public event PropertyChangedEventHandler PropertyChanged = (s, e) => { };
答案 2 :(得分:0)
尝试删除类名后的方括号():
public class SimpleClass:INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _property;
public string Property
{
get { return _property; }
set
{
_property = value;
PropertyChanged(this, new PropertyChangedEventArgs("Property"));
}
}
}