MVVM模型实例化

问题描述

| 在WPF MvvmFoundation之后,将View与ViewModel链接起来有许多选择,如http://www.paulstovell.com/mvvm-instantiation-approaches所述。 但是,他们的示例没有关于如何将ViewModel与Model链接的内容。 传统上,我先创建模型,然后创建一个或多个渲染模型的视图。似乎MVVM促使人们创建视图,该视图创建了ViewModel,后者又创建了Model。我希望情况并非如此,因为将复杂的业务模型与各种ModelView连接起来可能会很困难。 您如何在MVVM中实例化业务模型类并将其与ViewModels链接?     

解决方法

我通常将Model对象作为构造函数参数传递给VM。我使用App类作为控制器,它将使用主模型初始化MainWindow,MainWindowViewModel。之后,MainWindowViewModel负责使用适当的模型对象初始化其他VM。
    private void Application_Startup(object sender,StartupEventArgs e)
    {
        mainWindow = new MainWindow();
        mainWindow.DataContext = new MainWindowViewModel(new Model());
        mainWindow.Show();
    }
    ,您可以在ViewModel中创建BusinessModel类。 因此,在您的
CustomerViewModel
中,您会说ѭ2​​ѭ,而您的
CustomerView
将绑定到ViewModel的
CurrentCustomer
属性。 如果您有兴趣,我将使用MVVM编写一个简单的示例,作为View,Model和ViewModel如何交互的示例。     ,我使用依赖注入/ MEF来做到这一点。只需将所有模型类一直导出到整个链,然后自动将它们导入到ViewModel构造函数中即可。     ,我会根据情况采取各种不同的方法。我发现,要链接此数据时,一个大小并不适合所有大小。 对于简单的情况,我将让ViewModel和Model相同。显然,这并不适合所有情况,但有时无需付出额外的努力即可将M与VM分开。 (非常适合您拥有列表框项目而信息很少的情况) 有时,尤其是当模型是您无权访问(由另一位开发人员编写)的代码块时,可以轻松地对模型进行子类化,并在其上添加所有VM内容(可观察的属性等)。 。 最后,我将使用Souvik提到的方法。使用要用作参数的模型信息构建VM,否则将其传递给虚拟机。对于我的更大和更复杂的Model / ViewModel关系,这可能是最常用的方法。     ,我正在使用IoC容器将IRepository实例自动传递给VM构造函数,并且VM需要与模型进行的所有操作都通过此存储库完成。存储库是一类:创建,读取,更新和删除数据。当我需要显示一些视图(窗口)时,我使用IViewService.ShowDialog(viewModel作为ViewModelBase)。在IViewService的实现中,有向VM注册的视图,因此VM仅需要知道其他VM,而不必知道它们的视图(例如\“为此视图模型显示视图\”)。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...