在不使用INotifyPropertyChanged的情况下检测值更改

时间:2018-12-17 06:38:46

标签: c# inotifypropertychanged

是否可以不使用INotifyPropertyChanged来检测字段或属性的更改?

例如,我的目的是连接到某个字段并检测其值是否已更改,即使它是int字段也是如此。

2 个答案:

答案 0 :(得分:3)

写一个自己写的整数以外的其他整数都没有效果。 INotifyPropertyChanged无法解决。

您可以使用引发事件的属性来包装字段。 您可以具有一个管理器类,该管理器类公开一个属性,即使该字段不属于该类,也可以通过该类来管理该字段。 您可以使用线程轮询该值,如果更改则引发该事件。

在大多数情况下,理智的方法是尽可能接近mvvm蓝图,因此没有人会对此感到惊讶。

答案 1 :(得分:2)

您可以决定在属性更改时引发自定义事件。您的上层唯一要做的就是订阅SomeProperty事件。您可以将EventHandler委托替换为适合您的需求。

 public event EventHandler SomePropertychanged;

    private int _SomeProperty;
    public int SomeProperty
    {
        get
        {
            return this._SomeProperty;
        }
        set
        {
            if (this._SomeProperty != value)
                SomePropertychanged?.Invoke(this, new EventArgs());
        }
    }