VB WPF MVC(模型视图)

VB WPF MVC(模型视图),wpf,vb.net,model-view-controller,design-patterns,Wpf,Vb.net,Model View Controller,Design Patterns,我有一个旧的VB6应用程序。我想在VB.Net中使用WPF重新创建它。但我对“模型-视图-控制器”模式有点困惑。我有两本关于设计模式的书(GoF和J.Bishop),但这两本书中没有一本提到这种模式。我还搜索了互联网,找到了一些java示例。但我仍然不知道如何在我的新WPF应用程序中使用MVC模式(我应该吗?)。 比如说,我的模型(实际上更复杂)只是一个具有制造商、直径和深度属性的轮辋(圆)。用户应该能够使用文本框和组合框修改属性。 有人可以创建一个小例子来解释使用WPF的MVC模式吗? 当然,

我有一个旧的VB6应用程序。我想在VB.Net中使用WPF重新创建它。但我对“模型-视图-控制器”模式有点困惑。我有两本关于设计模式的书(GoF和J.Bishop),但这两本书中没有一本提到这种模式。我还搜索了互联网,找到了一些java示例。但我仍然不知道如何在我的新WPF应用程序中使用MVC模式(我应该吗?)。
比如说,我的模型(实际上更复杂)只是一个具有制造商、直径和深度属性的轮辋(圆)。用户应该能够使用文本框和组合框修改属性。
有人可以创建一个小例子来解释使用WPF的MVC模式吗? 当然,我喜欢可重用类在整个应用程序中有一个可行的概念。
提前谢谢
Oops

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


有很多MVVM框架可用,还有微软自己的框架(如果你有一个更大的、模块化的应用程序,它可能会更有用)。

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


有很多可用的MVVM框架,还有微软自己的框架(如果你有一个更大的、模块化的应用程序,它可能更有用)。

WPF可能更适合MVVM(模型视图模型)。我建议您阅读本MSDN,或许还可以遵循他们的建议。我在上还找到了一个很好的链接集。

WPF可能更适合MVVM(模型视图模型)。我建议您阅读本MSDN,或许还可以遵循他们的建议。我在上还找到了一个很好的链接集。

这里有一个关于MVC模式是什么以及如何将其应用到WPF应用程序的“简要”描述

(我可能有一些细节有点不对劲,因为我主要是在Silverlight上进行黑客攻击的,但这个概念非常相似。)

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

示例中的模型与您描述的车轮轮辋几乎完全相同-车轮轮辋类具有在适当的数据类型中定义的各种属性。我会将模型I放在一个单独的程序集中,以使其与其他代码分开,但您可以满足于只将模型类保存在一个“Models”文件夹中。该模型在数据库中也会有一个“双胞胎”,模型类几乎是一对一映射到表的

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

视图将是实际的WPF xaml文件-定义网格或画布或您拥有的内容。在WheelRimView上会有标签和文本框,用于显示或访问不同的属性,可能还有产品图像等。视图的代码将具有所有相关的事件处理程序(开始、按钮单击等),用于从字段中获取数据并将其传递给控制器

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

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

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

  • 用户单击列表页面上的“编辑”。将加载WheelRimView页面
  • 方法(或相应的方法)调用WheelRimController.GetWheelRim(wheelRimId)
  • GetWheelRim(wheelRimId)从数据库表中获取相应的数据,并填充WheelRim对象的属性,该对象返回到WheelRimView
  • WheelRimView将特性值插入标签和文本框
  • 用户更改直径值并单击“保存”按钮
  • 方法调用WheelRimController.ModifyWheelRimDiameter(wheelRimId,diameter)方法
  • WheelRimController.ModifyWheelRimDiameter(wheelRimId,diameter)方法解析直径(如果是字符串)并加载模型对象。它将修改后的值应用于模型对象并将其保存到数据库中
  • WheelRimController.ModifyWheelRimDiameter(wheelRimId,diameter)向WheelRimView返回一个状态代码(例如,一个声明任何验证错误的预定义数字),以报告保存成功
  • WheelRimView向用户显示结果消息(希望“已保存”)
  • 我希望事情会明朗一些