ViewModel的责任

Fab*_*lai 8 architecture mvvm

我正在构建一个工具,其目标是基于一些参数下载文件.

第一步是设置(或检索)这些参数.

FileDownloadsManager检索不同的参数集(比如说通过配置文件):它确切地知道要下载正确文件的参数.

那些参数存储在一个类中,我有一个这个类的实例列表.

这意味着我可以使用多个可能的参数集下载我的文件.

在这些ParameterSets周围,我构建了ParametersSetsViewModels,以便我可以在列表中显示它们,并添加一些View-Only属性.在内部,ParametersSetsViewModels具有对底层ParametersSets的引用,这些ParametersSets用作View Model成员的源.

现在,当我选择我的参数集时,我希望下载相关文件.

这应该是谁的责任?

我有这种感觉,如果ViewModel过于活跃,通过一个返回下载文件的方法,这将违背MVVM模式; 你对此有什么看法 ?

奖励:使用BackgroundWorkers或WebClient的异步方法在后台下载应该是可行的.

Gon*_*ing 20

在我看来,每个人都认为MVVM没有控制器,因为他们忽略了C. MVVM实际上是MVC的一种变体,"只是添加了ViewModels".

也许它应该被称为MVCVM而不是?

ViewModels仅用于从视图中卸载"GUI"代码并包含任何用于绑定的数据.ViewModels不应该进行任何处理.一个很好的测试是,您的ViewModel可以通过自动化单元测试进行测试,并且不依赖于数据源等.他们应该不知道数据实际来自哪里(或者谁在显示它).

虽然可以忽略/避免,但Controller负责决定显示哪些数据模型以及在哪些视图中显示.ViewModel是Models(MVVM中的M)和Views之间的桥梁.这允许更简单的"分离"XAML创作.

在回答您的问题时,处理应由控制器处理.如果需要更新ViewModel以显示忙碌指标等,那么它不是View或Model或ViewModel的责任.

  • 感谢您的见解,特别是对"MVCVM"的反思:这绝对值得一说:控制者还活着! (3认同)
  • @calligraphic-io:这取决于具体的实现。新的 Razor 页面就是一个很好的例子。 (2认同)