事件处理 - Visual Studio



我遇到了如下所述的问题。 我是.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.

相关内容

  • 没有找到相关文章

最新更新