不使用 INotifyPropertyChanged 检测值变化

Detecting value changes without using INotifyPropertyChanged

有没有办法在不使用 INotifyPropertyChanged 的​​情况下检测字段或 属性 的变化?

我的观点是,例如,连接到某个字段并检测其值已更改,即使它是一个 int 字段。

您可以决定在 属性 更改时引发自定义事件。您的上层唯一需要做的就是订阅 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());
        }
    }

除您自己编写的整数外,您在写入整数时无法使用任何效果。 INotifyPropertyChanged.

没有办法

您可以用引发事件的 属性 包裹该字段。 您可以拥有一个公开 属性 的管理器 class,即使该字段不属于 class,您也可以通过它管理该字段。 您可以使用线程轮询该值,如果它发生变化则引发事件。

在大多数情况下,明智的做法是尽可能地遵循 mvvm 蓝图,这样大家就不会太惊讶了。