对MVVM中关注点分离的困惑

时间:2017-12-14 17:05:47

标签: c# wpf mvvm caliburn.micro

我在去年使用Caliburn.Micro编写了几个MVVM应用程序,但我觉得这个设计模式的某些部分仍在逃避我。

现在,我正在开发一个与设备交互的应用程序。我们假设它包含以下组件:

  • ShellView / ShellViewModel - 基本Conductor<T>绑定到自定义INavigationService
  • SelectView / SelectViewModel - 显示设备列表。
  • ControlView / ControlViewModel - 与设备互动。

现在,从UX的角度来看,我希望SelectView报告连接到设备时发生的任何错误。但是,从关注点分离的角度来看,SelectViewModel不应包含设备连接代码,因为它特定于ControlViewModel

我之前的解决方案是让SelectViewModel在导航到ControlViewModel实例之前调用初始化函数,但这感觉不对,现在我不再使用{{ 1}}。

我确信这归结于我“只是没有得到它”,但在这个例子中我应该把设备连接代码放在哪里?

更新

在做了一些研究之后,我认为我的问题可能是由于对MVVM中模型层的误解造成的。我一直把我的大多数应用程序逻辑放在我的视图模型中,但是我应该把它放在单独的模型中吗?

在这种情况下,我的INavigationService可以构建SelectViewModel的实例,处理任何错误,并使用ControlModel将其注入INavigationService的属性中

0 个答案:

没有答案