1

我的意思是:假设 ViewModel 上有IsCompliantShowWarning属性。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 也发生了变化,依此类推。这样,每个属性都会跟踪自己,而类作为一个整体来管理属性之间的依赖关系。

这存在吗?这是一个合理的想法,还是有更好的方法来实现我的目标?

4

1 回答 1

1

没有“唯一的方法”可以做到这一点,但是一些人已经尝试了不同的技术,包括通用的 INotifyPropertyChanged 拦截、一些基于属性的扩展和一些面向方面的编程技术

有关这些的一些示例和信息,请参阅:

于 2013-08-06T00:10:26.457 回答