MVVM - 在ViewModel后面的代码中调用UI逻辑

时间:2014-01-24 10:35:44

标签: xaml events mvvm viewmodel code-behind

我正在使用MVVM模式处理一些.Net XAML应用程序。 根据MVVM,我将我的应用程序逻辑保存在VM中,在Code Behind中,我执行与UI相关的操作。 但我需要在Code Behind中执行一些与UI相关的代码,以响应VM中的某些逻辑。

实施例: 我需要在登录操作失败时显示错误消息(在我的情况下为自定义Toast通知)。登录操作驻留在VM中,但是我不能在我的VM中使用任何特定于UI的类,所以我在VM中创建了一个事件并在Code Behind中连接到了UI的东西。

是否违反了MVVM模式?如果是,那么如何解决我的情况?

1 个答案:

答案 0 :(得分:4)

理想情况下,通过Mediator完成MVVM模式中View和ViewModel之间的通信,以避免从VM硬引用View。有调停员,

  1. View可以订阅某种类型的消息。
  2. 然后VM将消息发送给mediator,
  3. 调解员广播消息,所以订阅的所有方都会得到它。
  4. 收到后,View可以根据消息执行某些UI逻辑来响应
  5. 上面的CodeProject链接显示了如何实现中介类。但我建议使用popular MVVM framework,因为你会发现它有Mediator实现,还有许多其他MVVM工具可以开箱即用。