我是Caliburn的新手。
我有几个关于MVVM和Caliburn的问题。
视图如何在ViewModel上显式调用方法? Caliburn首先调用ViewModel构造函数。如果是,那么实例将被包含在哪里?我的View中的代码此时创建了一个新实例(我需要显式调用ViewModel上的方法)。但是关于ViewModel应该已经实例化,这很愚蠢。
如何在UI线程上强制进行绑定更新?
答案 0 :(得分:4)
Caliburn.Micro具有actions的概念,可以从视图中调用视图模型上的动词。您可以在很大程度上使用约定,例如,如果视图中Button
有x:Name="Save"
,那么{{1}时将调用视图模型上的Save
方法单击。
您始终可以使用显式绑定来覆盖约定,并提供自己的约定,Caliburn.Micro还提供附加属性以将视图模型方法与视图中的事件相关联。
在强制更新UI方面,您的视图模型将实现Button
,Caliburn.Micro提供此基础实现,包括INotifyPropertyChanged
和PropertyChangedBase
(这会增加生命周期) )。
然后,您可以使用Caliburn.Micro提供的帮助程序方法来调用Screen
事件。这称为PropertyChanged
,它可以使用表达式lambda来指定要通知的属性,而不是使用魔术字符串。