那么如何显示模型相互关联的复杂聚合视图模型呢?
没有 wpf 弟子说过这件事,猜猜为什么它不可能......
你认为那是真的吗?
不明白我吗?
看:一个CustomerViewModel有很多OrderViewModel和那些ProductViewModel。
您有3 个工作区来为所有3 个 ViewModel输入新数据,并且您有3 个列表框/组合/数据网格来多选类型 => customerVMs, orderVM
和 productVM 的集合。
UI 对用户来说是有意义的,他不需要关闭/打开工作区每个新客户/订单/产品添加什么是糟糕的用户体验,你如何满足这个典型的 LOB 应用程序要求?
编辑:
您在 MVVM 中有一个 WorkSpace 类型的集合。每个 ViewModel 都可以是一个 Workspace,因为它派生自 WorkSpace 类。Workspaces 集合绑定到 ItemsSource afair josh smith 示例。
声明:我想使用 goold 成熟的 windows 窗体用户界面,没有可关闭的视图模型...... 问题:MVVM 只能与工作区一起使用(可关闭的无关紧要......)因为 CustomerviewModel 必须已经实例化,然后添加到绑定到的工作区集合itemsControl 和 datatemplated 取决于数据类型。
如果我没有保存我的 ViewModel 实例的工作区,我无法对它们进行数据模板化,因为 MVVM 中的 ViewModel 将模型作为构造函数参数。使用 CustomerViewModel 的 DataType 对 UserControl 进行数据模板化将在 XAML 中引发异常!
现在看看我想要的 UI:我没有工作区,但 3 ViewModels = 3 UserControls datatemplated 意味着 3 次大爆炸......
你现在明白为什么我不喜欢 MVVM 了吗?它没有经过深思熟虑,我正在寻找解决方案......
当然,我可以将我的 ViewModels aka DataFormulars 放在 ObservableCollection 中,但我不希望它们绑定到 ItemsControl。我希望这 3 个 UserControl 在我的布局中有一定的位置。使用 ItemsControl,您有一个愚蠢的队列,如果新的 Dataformular 不适合现有空间,则会在其中添加和包装。这就是垃圾布局设计/糟糕的用户界面。
你现在得到我了吗?