【发布时间】:2011-06-17 20:59:34
【问题描述】:
在 MVC 中,一个模型可以有多个视图,在 WPF 中,一个 XAML 代码隐藏模型紧靠 1 个 XAML(视图)是不是 WPF/XAML 从一开始就在 MVC 方面存在缺陷?
【问题讨论】:
标签: wpf model-view-controller design-patterns architecture
在 MVC 中,一个模型可以有多个视图,在 WPF 中,一个 XAML 代码隐藏模型紧靠 1 个 XAML(视图)是不是 WPF/XAML 从一开始就在 MVC 方面存在缺陷?
【问题讨论】:
标签: wpf model-view-controller design-patterns architecture
我建议将 MVVM 用于 WPF。
您将 MVC 与 Windows 窗体与 WPF 与背后的代码进行比较 - 将架构模式与技术进行比较(不使用模式)。这是不公平的比较。
我在MVVM starting from a Windows Forms perspective 上写了一个系列,可能有助于理解这一点。您会发现,使用 WPF 实现的 View 和 ViewModel 分离比 MVC 的 Controller 实现起来要干净和简单得多。它实际上允许使用更少的实现工作来实现更多解耦架构。
【讨论】:
好问题!
在 MVC 中,您声明一个模型可以有多个视图,这是真的。但是,每个视图都有自己的控制器。
在 MVVM 中,一个模型可以有多个视图,在这种情况下,每个模型都可以有自己的视图模型。
但是,实际上,如果 ViewModel 没有任何高度特定于某个视图的概念,则完全可以重用视图模型。事实上,我写了一篇关于跨平台 XAML 应用程序的文章,其中我在三个应用程序之间重用代码,一个在 WP7 上,一个在 Silverlight 中,另一个在 WPF:
http://blogs.msdn.com/b/mikeormond/archive/2010/12/09/writing-cross-platform-xaml-applications.aspx
每个应用的视图都非常不同,但是我能够为所有三个应用重复使用模型和视图模型。
【讨论】:
WPF/XAML 是一种技术,而 MVC 是设计模式,当技术不将您限制在特定模式时,它是很好的,并且允许开发人员选择使用什么模式。与编程语言相同,您可以使用任何设计模式。
您可以将 MVC、MVP、MVVM 或 YourMegaPattern 与 XAML\WPF 一起使用。技术应该高于模式,它是通常绑定到特定模式的框架。
例如,您可以采用 ASP .NET 技术,以及基于它的 MVC 框架。
【讨论】: