2012-11-22 42 views
1

我是Caliburn的一名新人。Caliburn中View和ViewModel之间的相互作用

我有几个关于MVVM和Caliburn的问题。

  1. 视图如何在ViewModel上显式调用方法? Caliburn首先调用ViewModel构造函数。那么,如果是,那么实例将被包含在哪里?我的View中的代码现在创建一个新的实例(我需要显式地在ViewModel上调用一个方法)。但关于该ViewModel应该已经实例化,这是愚蠢的。

  2. 如何强制在UI线程上进行绑定更新?

回答

4

Caliburn.Micro的概念是actions从视图调用视图模型上的动词。您可以在很大程度上使用约定,例如,如果在您的视图中有Buttonx:Name="Save",则在点击Button时将调用视图模型上的Save方法。

您始终可以使用显式绑定来覆盖约定,并提供您自己的约定,并且Caliburn.Micro还提供附加属性以将视图模型方法与视图中的事件相关联。

在迫使UI更新的条款,您的视图模型将实施INotifyPropertyChanged,并且Caliburn.Micro提供的这个基地实现,包括PropertyChangedBaseScreen(这增加了生命周期)。

然后,您可以使用Caliburn.Micro提供的帮助程序方法调用PropertyChanged事件。这称为NotifyOfPropertyChange,它可以采用表达式lambda来指定要通知的属性,而不是使用魔术字符串。