【发布时间】:2015-01-29 14:51:30
【问题描述】:
这听起来可能很基本,但请原谅我,让我知道可能的解决方案。我在我的应用程序中使用 MVVM 模式,而且我是它的新手。
我有一个父视图(比如“StudentView”)及其视图模型(StudentViewmodel)
StudentView 包含两个控件 - Tablinks 和一个“保存按钮”
- 选项卡链接将链接到每个视图(如学术、个人等)。这就像带有两个窗格的树视图。我在右窗格中加载页面,标题在左窗格中。每个视图都有自己的 Viewmodel 和相应的属性
- 允许用户编辑每个视图中绑定到 VM 属性的值。
允许用户浏览每个选项卡并进行更改以更新相应 VM 中的属性
现在,当用户点击“StudentViewModel”中的“保存”按钮时,我需要在每个 VM(如 Academic、Personal)中调用“Save”方法并获取其对持有更新属性的对象的引用并推送给我的控制器。
这里的问题很简单。当我调用 AcademicViewModel 的 Save 方法时,它将创建一个新实例,并且我无法获取通过 Tablinks 启动的已修改对象。
除了将这些属性设为静态之外,这里还有其他工作吗?
提前致谢。
编辑: 因为,我需要从不同的视图模型调用这个 Save 方法。它不是静态方法。它是一个实例方法,因此我需要一个对象来调用它。
【问题讨论】:
-
这个
"Tablinks will have link to each View"是错误的。在 MVVM 中,您使用 data templates。在StudentViewModel中应该是子视图模型类的一些可观察的基础集合。然后您的子视图模型调用StudentViewModel方法来做一些事情:添加项目、编辑、删除等。显然您将StudentViewModel实例传递给子视图(或者以某种方式使其可用,static属性也可以这样做)。如果您想使用对话框,请参阅this。 -
请编辑您的问题以解释为什么 Save 方法将创建您的 ViewModel 的新实例,而不是使用现有实例。情况不应该如此。如果您包含代码的一些相关部分,将会有所帮助。