请在本主题中讨论的简单场景中建议(视图模型的交互模型)MVVM设计

时间:2010-03-14 07:52:59

标签: wpf mvvm viewmodel mvvm-foundation

数据层

我有一个 Order 类作为实体。这个订单实体是我的模型对象。

订单可以是不同的类型,让它成为

  • A

  • C

  • d

Order类也可能具有常用属性,如Name,创建时间等。

同样基于订单类型,有不同的字段不常见。

查看图层

该视图包含以下内容

  1. 主菜单
  2. 的ListView
  3. 主菜单包含下拉菜单按钮,该按钮用于根据从下拉列表中选择的类型创建订单。下拉列表包含订单类型(A,B,C和D)。

    根据订单类型有不同的用户控制。例如,如果用户选择创建类型A的订单,则会弹出具有不同输入字段的不同视图。

    因此,每种订单类型都有四个用户控件。

    如果用户从下拉列表中选择A选项,则会创建类型A的订单,反之亦然。

    现在,下面是列表视图,其中包含用户目前创建的订单列表。

    修改任何特定订单,用户可以双击列表视图行。根据列表视图中用户单击的订单类型,该订单类型的视图将以编辑模式打开。例如,如果用户从列表视图中选择订单类型A,则查看订单类型A在编辑模式下打开。

    请在上面讨论的场景中建议视图模型的交互模型。

    如果查询非常基本,请原谅我,因为我是MVVM和WPF的新手。

2 个答案:

答案 0 :(得分:0)

不是给你一个特定的设计,我会建议一种不同的方式来看问题。

制作你的xaml。现在,如果它可以以任何方式组织数据暴露它想要的任何方法集,那会是什么样子?在想象这一点时,甚至不要考虑实体的真实结构。更多的遗产?减?由您决定 - 无论您的观点最适合什么。

好的,你刚才描述的是你的ViewModel。为此编写公共API。然后,将其连接到实际的底层实体。

答案 1 :(得分:0)

如何为所选订单类型创建正确的View是您的主要问题吗?即下拉或ListView如何触发正确的Order视图显示。

如果这就是你所得到的,那么你会想要这样的东西:当用户点击Orders列表(例如)时,你需要更改一些底层的ObservableCollection并发送某种类型的通知或强制它在某种Workspace对象上执行某些操作。理解这一点的最佳方式可能是看Josh Smith的MvvmDemoApp以及article,如果你还没有读过它的话。从他实现WorkspaceViewModel的方式开始,因为我认为这可能是方法,或类似的东西,你正在使用Order视图用户控件。 (如果我理解你的话)。