2013-08-04 32 views
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呼叫二传手为IsCompliant,触发绑定到ShowWarning视图的更新。但是这让我觉得很开心,因为每个属性在ViewModel中都有这些调用。

我更喜欢的方式是让我可以在构造函数中注册的依赖关系表,并让MVVMCross记录如果属性A发生变化,然后属性B也发生变化等等。通过这种方式,每个属性都会跟踪自己,并且整个类将管理属性之间的依赖关系。

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

回答

1

有没有“的一种方式”来做到这一点,但也有少数人有不同的技术,包括一般INotifyPropertyChanged的拦截试验,一些基于属性的扩展和一些面向方面的编程技术

有关这些一些例子和信息,见:

+0

哇,这是一个很大吸收。我会通过这些链接工作,看看什么对我来说最好。谢谢! –

相关问题