我遇到了如下所述的问题。 我是.NET/Visual Studio(2013)的新手,我试图弄清楚为什么下面的代码不起作用。
我有以下课程
public class PropertySettings
{
...
// get single instance of this class
public static PropertySettings Instance
{
get { return thisInstance; }
}
// event declaration
public event EventHandler<MyObj> PropertyChanged;
...
public void SaveProperty(string propertyName, object obj)
{
var oldValue = obj.OldVal;
var newValue = obj.NewVal;
// Why is PropertyChanged event always null?
if (PropertyChanged != null && oldValue != newValue)
{
PropertyChanged(this, obj); // pass reference to itself
}
}
}
SaveProperty 方法正在检查 PropertyChanged != null,如果是这样,它通过传递对自身和 obj 的引用来调用它。
然后从其他类调用 SaveProperty 方法,如下所示:
PropertySettings.Instance.SaveProperty("Width", Width);
我遇到的问题是属性更改始终为空,因此永远不会调用属性更改事件。
如果您有类的实例:
var x = new PropertySettings();
然后,您需要像这样"连接"任何事件处理程序:
// "wire up" AKA "subscribe to" AKA "register" event handler.
x.PropertyChanged += HandlePropertyChanged;
// e.g. event handler...
void HandlePropertyChanged(object sender, object e)
{
throw new NotImplementedException();
}
否则,PropertyChanged == null
将被true
.