代码之家  ›  专栏  ›  技术社区  ›  OlimilOops

VB WPF MVC(模型+视图+?)

  •  0
  • OlimilOops  · 技术社区  · 16 年前

    我有一个旧的VB6应用程序。我想在里面重现VB.Net版使用WPF。但我对“模型-视图-控制器”模式有点困惑。我有两本关于设计模式的书(GoF和J、 主教)在这两本书中,有一本确实没有提到这种模式。我也在网上搜索了一些java示例。但我仍然不知道该如何使用MVC模式(应该吗?)在我的新WPF应用程序中。
    举个例子,我的模型(事实上它更复杂)只是一个轮辋(圆),具有制造商、直径和深度的属性。用户应该能够使用文本框和组合框修改属性。
    当然,我喜欢可重用类在整个应用程序中有一个可行的概念。
    哎呀

    3 回复  |  直到 16 年前
        1
  •  2
  •   Johan Strömhielm    16 年前

    下面是对MVC模式的“简要”描述,以及如何将其应用于WPF应用程序。

    基本上,其思想是分离关注点并定义应用程序不同部分之间的接口,目的是保持代码的结构化和可维护性。

    模型 在您的示例中,将与您描述的wheel rim非常接近——WheelRim类具有在适当的数据类型中定义的各种属性。我将把模型I放在一个单独的程序集中,以使它与其他代码分开,但是您可以将模型类放在一个“Models”文件夹中。模型在数据库中也有一个“孪生兄弟”,模型类几乎是一对一映射到表。

    (您可能想看看Linq2SQL或Entity Framework,如果定义了数据库,您几乎可以免费获得模型以及合适的数据库访问代码。)

    这个 查看

    这个 将是用于操作数据的任何“处理程序代码”。我们在这里讨论基本的CRUD操作,以及验证等。此外,控制器层将负责以可无缝进入视图的格式编译数据。因此,WheelRimController将具有“GetWheelRimList”、“GetWheelRim”、“AddWheelRim”、“ModifyWheelRim”和“deleteheelrim”等方法。这些方法以值作为参数,对模型对象进行一致的操作。这个

    我建议保持xaml文件后面的代码不受任何“控制器”的影响,比如验证、聚合等代码,后面的代码基本上只接受文本框、列表框等中的值,并按“原样”发送给控制器方法进行处理。另外,在获取用于表示的数据时,应将任何数据格式代码保持在最低限度(即,视图中没有过滤或翻译)。

    “用户打开轮辋并编辑直径”的典型用例将在代码中这样显示:

    1. 用户单击列表页上的“编辑”。WheelRimView页面加载。
    2. 轮缘控制器.GetWheelRim(wheelRimId)从数据库表中获取相应的数据,并填充WheelRim对象的属性,该对象将返回到WheelRimView。
    3. 这个车轮视图。保存()方法调用轮圈控制器。修改轮圈直径(轮缘,直径)方法。
    4. 这个轮圈控制器。修改轮圈直径(wheerlimid,diameter)方法解析直径(如果是字符串)并加载模型对象。它将修改后的值应用于模型对象并将其保存到数据库中。

    我希望能澄清一些。

        2
  •  1
  •   Richard Szalay    16 年前

    由于有丰富的绑定支持,WPF(和Silverlight)非常适合MVVM(Model-View-ViewModel)。MVVM是MVC的一个扩展,它使用视图模型绑定视图的当前状态,而不是直接操作视图。

    Prism 框架(如果您有一个更大的模块化应用程序,它可能更有用)。

        3
  •  1
  •   tvanfosson    16 年前

    WPF可能更适合MVVM(Model-View-ViewModel)。我建议你读一下这个MSDN article on MVVM 或许,也应该听从他们的建议。还有一个很好的链接集,我在 Bryant Likes blog .