【发布时间】:2016-07-17 05:05:07
【问题描述】:
我是 WPF 和 MVVM 的新手,我对如何使用模型和视图模型来满足我的需要有点困惑。 应用程序将有一个全局“World”对象,它将包含各种自定义类的对象集合,这些对象将由侦听端口和套接字的后台线程持续创建、销毁和更新,这是应用程序逻辑的主体。这个对象集合需要在应用程序的整个执行过程中保持静态,无论页面导航如何,并且可以从自定义类访问并且可以从 UI 编辑(将有一个页面用于概述“世界”状态,以及详细视图、编辑对象和配置的页面)。
根据我的阅读,我收集到这些数据应该由模型维护,并且 ViewModel 应该访问它以为视图做准备。这是否意味着,对于我创建并需要用户查看或编辑的每个“世界”自定义类,都应该有一个 ViewModel 来匹配?
查看代码示例和教程,我看到 viewModels 对象链接到 XAML 代码中的视图,并在加载所述视图页面时实例化(并在退出时销毁)。如何将该 viewModel 对象链接到特定且现有的 Model 对象,它应该从中获取所有数据并且必须将 UI 输入数据保存到该对象?
总结一下:
- 世界对象集合在应用程序启动(应用程序或 主窗口范围)。例如,创建了 Task 类的对象。
- 启动后台进程,访问任务集合并根据他们找到的内容执行操作。 (他们也可以更改数据,因此必须通知模型视图以显示更改)。
- GUI 导航已启动,并动态创建控件,用于查看和编辑世界对象中的数据。例如,显示控件来管理多个任务。
如何将模型对象(例如特定任务)与 viewModel 链接起来?在 XAML 上?在 viewModel 后面的代码中,每个模型实例都有某种唯一标识符?在代码隐藏中动态添加控件时,将模型对象实例传递给 viewModel? 模型通知 de viewModel 更改的最佳方式是什么,反之亦然?
如果能提供任何指导或参考解决此类情况的代码示例,我将不胜感激。
提前致谢
【问题讨论】: