【发布时间】:2011-03-30 07:07:51
【问题描述】:
我一直在使用 MVVM Light Toolkit 来帮助学习 MVVM 模式。但是,我一直无法解决控件场景中的用户控件问题。
例如,在 Timesheet 应用程序中,假设我们有一个名为 NewUnitOfWork 的控件。首次加载时,带有项目列表的 ListBox 面板将作为 NewUnitOfWork 的内容加载。用户点击一个。一个新面板与一个包含该项目可能任务的 ListBox 交换。选择了一个任务并加载了一个新面板,该面板将包含用于为所选项目的所选任务输入数据的控件。
因此,我们将一个用户控件中的选定项传递给其他两个用户控件,这两个用户控件又作为 NewUnitOfWork 控件(或窗口)的内容交换。
如果每个控件都有自己的 ViewModel,我们需要将选定的值从一个 ViewModel 传递到下一个等。
我已经使用全局变量(通过“服务”)在单用户情况下工作。但是,这存在并发问题,这不是一个好的解决方案。这是低于标准的。
我在这个论坛上多次看到关于 ViewModel 作为另一个 ViewModel 成员的建议。虽然这解决了手头的问题,但我认为它违反了 MVVM 模式。另一个 ViewModel 不是 ViewModel 应该直接具有的 UI 相关功能。
所以。有没有人找到一种干净的 MVVM 兼容方式来做这种事情?
干杯
【问题讨论】:
标签: mvvm mvvm-light