代码之家  ›  专栏  ›  技术社区  ›  jonathanpeppers

Caliburn-已更改子ViewModel的属性

  •  1
  • jonathanpeppers  · 技术社区  · 14 年前

    假设我有这样一个ViewModel:

    class ViewModelA
    {
        private readonly IViewModelB _b;
    
        public ViewModelA(IViewModelB b)
        {
            _b = b;
        }
    
        public bool CanGo
        {
            get { return _b.MyBoolProperty; }
        }
    
        public void Go()
        {
            //Does something here
        }
    }
    

    调用NotifyOfPropertyChange(()=>的建议(正确)方法是什么;(CanGo)当MyBoolProperty的PropertyChanged事件从ViewModelB触发时?

    还是我设计的这个场景完全错了?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Marco Amendola    14 年前

    如果“子”模型与公共属性一起公开,则可以使用DependenciesAttribute跟踪更改:

     
    class ViewModelA
    {
        public IViewModelB B {get; private set;}
    
        public ViewModelA(IViewModelB b)
        {
            B = b;
        }
    
        public bool CanGo
        {
            get { return B.MyBoolProperty; }
        }
    
        [Dependencies("B.MyBoolProperty")]
        public void Go()
        {
            //Does something here
        }
    }
    

    为了正常工作,整个属性路径应该由通知对象组成。 你也可以把最后一个“*”

    [Dependencies("B.*")]
    

    深度级别(它不跟踪B的子模型的变化)。

    推荐文章