1

我是 Caliburn 的新来者。

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

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

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

4

1 回答 1

4

Caliburn.Micro 具有从视图调用视图模型上的动词的动作概念。您可以在很大程度上为此使用约定,例如,如果您Button的视图中有 a 和x:Name="Save",那么当单击Save时,将调用视图模型上的方法。Button

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

在强制更新 UI 方面,您的视图模型将实现INotifyPropertyChanged,并且 Caliburn.Micro 提供了它的基本实现,包括PropertyChangedBase, 和Screen(增加了生命周期)。

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

于 2012-11-22T16:55:28.077 回答