我正在使用 MVVM 模式开发一些 .Net XAML 应用程序。
根据 MVVM,我将应用程序逻辑保留在 VM 中,并在代码隐藏中执行与 UI 相关的操作。
但我需要在Code Behind中执行一些UI相关的代码来响应VM中的一些逻辑。
例子:
当登录操作失败时,我需要显示一条错误消息(在我的情况下是自定义 toast 通知)。登录操作驻留在虚拟机中,但我无法在虚拟机中使用任何特定于 UI 的类,因此我在虚拟机中创建了一个事件,并连接到代码隐藏中,执行 UI 操作。
是否违反了MVVM模式?如果是,那么我的案子该如何解决?
理想情况下,View 和 ViewModel 之间的通信通过 MVVM 模式完成Mediator http://www.codeproject.com/Articles/35277/MVVM-Mediator-Pattern以避免虚拟机硬引用视图。有一个调解员,
- View可以订阅某种类型的消息。
- 然后VM将消息发送给中介者,
- 中介者广播该消息,因此所有订阅方都会收到该消息。
- View收到消息后,可以根据消息执行一定的UI逻辑来进行响应
上面的 CodeProject 链接显示了如何实现中介器类。但我会建议使用流行的MVVM框架 https://stackoverflow.com/a/5069883/2998271因为您会发现它具有 Mediator 实现和许多其他开箱即用的 MVVM 工具。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)