我的 ViewModel 上有一个名为 LostFocus 的属性,我希望 View 知道它何时发生变化,以便它可以根据需要对该信息采取行动(即,如果 LostFocus 设置为 true,视图的设计者可能会使其模糊,或者他们可能什么都不做)。
我正在使用 Caliburn.Micro,所以如果它有任何我应该在这里知道的功能,请告诉我。否则,您将如何以 MVVM 方式执行此操作?
我的 ViewModel 上有一个名为 LostFocus 的属性,我希望 View 知道它何时发生变化,以便它可以根据需要对该信息采取行动(即,如果 LostFocus 设置为 true,视图的设计者可能会使其模糊,或者他们可能什么都不做)。
我正在使用 Caliburn.Micro,所以如果它有任何我应该在这里知道的功能,请告诉我。否则,您将如何以 MVVM 方式执行此操作?
据我了解,这可以通过普通数据绑定来完成。由于您使用的是 Caliburn.Micro,因此设计人员可以使用约定来进行绑定。例如,如果在 LostFocus 设置为 true 时要检查视图上的复选框控件,则设计人员只需确保复选框的 Name 属性设置为 LostFocus,然后 Caliburn 将设置自动绑定。
此外,在您的视图模型上,确保在更改 LostFocus 的值时引发属性更改通知事件。
您也可以在视图模型上创建 LostFocus 事件,而不是使用 LostFocus 属性。然后,您可以在您认为合适时引发此事件,然后在视图上,设计人员可以使用事件触发器和触发操作来响应该事件。例如,在我的一个项目中,我设置了一个事件触发器来响应视图模型的 Activated 事件,然后我编写了一个自定义触发器动作来播放负责执行视图介绍动画的故事板。这种方法不限于 Caliburn.Micro,但我确实在 Caliburn.Micro 项目中使用过它,所以它确实有效。
我最终了解了 BindingConverter 并使用它来将布尔属性 false 转换为 null 并将 true 转换为 BlurEffect。