如何从ViewModel到View进行通信

时间:2013-01-29 12:49:44

标签: mvvm caliburn.micro

我的ViewModel上有一个名为LostFocus的属性,我希望View能够知道它何时发生变化,以便它可以根据需要对此信息采取行动(也许如果设置LostFocus,视图的设计者可能会使其模糊是真的,或者他们可能不会做任何事情。)

我正在使用Caliburn.Micro,所以如果它有任何功能我应该知道这里请告诉我。否则,您将如何以MVVM方式进行此操作?

2 个答案:

答案 0 :(得分:1)

这可以通过我理解的普通数据绑定来完成。由于您使用的是Caliburn.Micro,因此设计人员可以使用约定来进行绑定。例如,如果在LostFocus设置为true时要检查的视图上有一个复选框控件,设计器只需要确保复选框的Name属性设置为LostFocus,然后Caliburn将设置自动绑定。

此外,在您的视图模型上,确保在更改LostFocus的值时引发属性更改通知事件。

您也可以在视图模型上创建LostFocus事件,而不是使用LostFocus属性。然后,只要您认为合适,就可以引发此事件,然后,在视图中,设计人员可以使用事件触发器和触发器操作来响应该事件。例如,在我的一个项目中,我设置了一个事件触发器来响应视图模型的Activated事件,然后我编写了一个自定义触发器动作来播放一个故事板,负责执行视图的介绍动画。这种方法不仅限于Caliburn.Micro,但我确实在Caliburn.Micro项目中使用它,所以它肯定有效。

答案 1 :(得分:0)

我最后了解了BindingConverter,并使用它将false的布尔属性转换为null,将true转换为BlurEffect。