【问题标题】:Please suggest the ( Interaction model of view model) MVVM design in the simple scenario discussed in the subject请在主题中讨论的简单场景中提出(视图模型的交互模型)MVVM设计
【发布时间】:2010-03-14 07:52:58
【问题描述】:

数据层

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

订单可以是不同的类型,随便吧

  • A

  • B

  • C

  • D

Order 类也可能具有通用属性,例如名称、创建时间等。

此外,根据订单类型,有不同的字段不常见。

视图层

视图包含以下内容

  1. 主菜单
  2. 列表视图

主菜单包含下拉菜单按钮,用于根据从下拉菜单中选择的类型创建订单。下拉菜单包含订单类型(A、B、C 和 D)。

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

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

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

下面是列表视图,其中包含用户迄今为止创建的订单列表。

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

请为上述场景中的视图模型建议一个交互模型。

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

【问题讨论】:

  • 您认为“编辑模式”会在哪里打开?到目前为止,您只描述了一个 ListView...

标签: wpf mvvm viewmodel mvvm-foundation


【解决方案1】:

我不会给你一个具体的设计,而是建议一种不同的方式来看待这个问题。

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-12-30
      • 2013-09-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      • 2013-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多