几乎每个教程都以相同的方式解释WPF中的MVVM:我们有一些实体(Person,Student,Car等) - 我们为它创建一个只承载数据的Model类(它也可能实现INotifyPropertyChange,IDataErrorInfo等等) - 现在没关系),然后我们为该类创建一个View-Model,它将在某处查询和/或保存我们的实体(很可能是通过命令) - 我们的View将绑定到View-Model和voilà。
假设我们有一个应用程序不会与查询/保存实体一起使用。假设它应该包含一个按钮,单击该按钮将下载.exe文件(在后台线程中)并将启动它。我很好奇,你会如何处理这个问题(架构方面) - 你真的会为该程序创建一个名为“Model”的文件夹/类吗?它包含什么?我怎么看,我有两个抽象 - 一个用于下载文件,另一个用于启动它。我将它们注入View-Model并调用它们的方法(通过Command),就是这样。或者它应该是包含这些抽象的Model类?我知道这个问题可能看起来很奇怪,但这段时间以来一直困扰着我。
顺便说一下,我意识到这篇文章的标题并没有多说 - 我没有更好的想法,如果有人这样做 - 随意改变它。答案 0 :(得分:0)
对于您提供的示例,MVVM模型的设置方式如下。我们假设您要下载一些数据并将其显示在DataGrid
中,这是您视图的一部分。在View
中添加DataGrid
和Button
,通过命令将按钮单击绑定到ViewModel
。通过DataGrid
将ItemSource
绑定到视图模型中的某些ObservableCollection<T>
(视图模型必须实现INotifyPropertyChange
)。现在,当用户单击该按钮时,该命令将会触发,您可以通过下载向您ObservableCollection<T>
填充数据,绑定到UI的下载数据将自动显示...
我希望这会有所帮助。