我的意思是:假设 ViewModel 上有IsCompliant
和ShowWarning
属性。UI 有一些消息绑定到 ShowWarning,如果 ViewModel 不兼容,以及其他一些条件,我们希望显示警告。所以,我这样编码:
private bool mbIsCompliant;
public bool IsCompliant
{
get { return mbIsCompliant; }
set
{
mbIsCompliant = value;
RaisePropertyChanged (() => IsCompliant);
RaisePropertyChanged (() => ShowWarning);
}
}
public bool ShowWarning
{
get { return !IsCompliant && [other conditions]; }
}
请注意,RaisePropertyChanged
在 setter 中的双重调用IsCompliant
,以触发绑定到的视图的更新ShowWarning
。但这对我来说感觉很笨拙,因为每个属性在整个 ViewModel 中都有少量这些调用。
我更喜欢一种方法,有一个我可以在构造函数中注册的依赖关系表,并让 MVVMCross 跟踪这样一个事实,即如果属性 A 发生了变化,那么属性 B 也发生了变化,依此类推。这样,每个属性都会跟踪自己,而类作为一个整体来管理属性之间的依赖关系。
这存在吗?这是一个合理的想法,还是有更好的方法来实现我的目标?