假设其中一个ViewModel接收一些相当通用的命令(也可以从其他ViewModel执行,例如“stop ftp server”)。我该怎么办?如何执行命令?通过单身实用程序方法或通过OnPropertyChanged?
- 传播完成
OnPropertyChanged
事件容器,在一些顶层视图执行命令(MainWindowViewModel
) - 通过一些“单独服务层”级到每个
ViewModel
,直接在ViewModel
执行静态方法,像Utils.StopFtpServer()
- 其他?
视图应负责尽可能少的与视图无关的应用程序逻辑。 FTP服务器与View无关。但我个人不喜欢单身人士,所以我也不会使用这个选项。在你的例子中,我倾向于创建一个具有Stop方法的'FtpServer'类,并将它的一个实例传递给所有关注它的视图模型。我也会通过依赖注入将它传递给这些视图模型,所以我可以在将来替代它的实现。视图模型如何知道停止是另一个问题,你 - 你能解释一下吗? –
目前还不清楚你试图达到什么目的。 ViewModel如何接收命令“Stop ftp server”? –
嗯为什么View Model会收到这条消息,除非它特别关注它 - 在这种情况下,有人也会听命令。 –