【发布时间】:2010-05-04 14:42:41
【问题描述】:
首先,这是我对 MVVM 的第一次尝试……我买了它,我只是在实现它时遇到了一点麻烦。
我正在构建一个实用程序来帮助管理课程。我有一个 COURSE 对象,其中包含一些属性和方法以及 MODULES 的集合。每个模块都有一些属性、方法和对 PRESENTATION 对象和 LAB 对象的引用(每个都有一些属性。我首先实现了模型并编写了所有单元测试。
我现在的挑战是实现 UI(V 和 VM)...特别是 MVVM 的视图模型部分。
用户界面允许您创建课程、查看模块,然后对每个模块有一个主从视图,您可以在其中设置一些属性等。对于我的视图模型,我创建了一个对象来封装 COURSE 模型...公开一些属性,包括课程模块的 ObserveableCollection。
我遇到了一些让我陷入困境并寻求帮助的事情:
- 我不确定我是否通过创建封装 COURSE 模型的东西正确地处理了我的 VM 部分。因为我需要访问课程中的模块以及课程对象中的实验室和演示文稿。这是否意味着我也需要为每个虚拟机创建虚拟机?似乎我的做法是错误的,因为这种方法意味着我将封装模型中的每个对象,每个方法和属性也是如此?
- 在应用程序的 UI 中显示模块时,我需要按顺序上下移动。执行此操作的方法已融入 COURSE 模型。诀窍是当我从视图中使用这些方法时,它不会更新视图,因为课程对象位于 VM 中,而不是 M 中。我可以通过将我的 listview 的 DataContext 设置为 null 然后“修复”这个问题将其重置为与托管窗口(即课程)相同,但这并不理想。这些模块是一个可观察的集合,但它们不会更新,因为我在较低级别进行工作。
似乎我的虚拟机有点不对劲......有些东西告诉我,并非模型中的所有内容都应该封装在其中。
【问题讨论】:
-
你的标题是 WPF,为什么是 Silverlight 标签?
-
因为 MVVM 对两者都适用。
标签: wpf silverlight mvvm