Caliburn.micro:深度属性更改INPC在ViewModel中捕获

时间:2013-11-29 12:31:00

标签: c# wpf mvvm caliburn.micro

我有一个View,我绑定了Model的一些深层属性(使用Caliburn.Micro的命名约定):

查看:

   <UserControl x:Class="TOP.SomeView" 
   (...)
    <TextBox x:Name="NewFooModel_Foo" .../>

然后我需要在ViewModel中捕获该属性的INPC的触发:

型号:

public class FooModel{


        private string _foo;
(...)

        public int Foo {
            get { return _foo; }
            set {
                if (_foo != value) {
                    _foo = value;
                    NotifyOfPropertyChange(() => Foo);
                }
            }
        }
}

从那时起,模型的属性被正确绑定。所以,我需要将更改通知给CanCreateFoo,我不知道如何:

视图模型:

public class SomeViewModel{

(...)

      public FooModel NewFooModel {
            get { return _newFooModel; }
            set {
                if (_newFooModel != value) {
                    _newFooModel = value;
                    NotifyOfPropertyChange(() => Foo);
    //HERE I NEED TO NOTIFY TO CANCREATEFOOMODEL THAT A PROPERTY OF THE MODEL IS CHANGED
                }
            }
        }

   public bool CanCreateFooModel{
      get{
         return NewFooModel.Foo != null;
      }
   }
}

拜托,有人可以帮帮我吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用EventAggregator在属性更改时发布消息(以及当前VM的NotifyOfPropertyChange)。 感兴趣的每个模型都可以订阅此消息并进行处理。

相关问题