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