不使用 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 蓝图,这样大家就不会太惊讶了。
有没有办法在不使用 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 蓝图,这样大家就不会太惊讶了。