65.9K
CodeProject 正在变化。 阅读更多。
Home

从 Windows 应用程序迁移到 WPF

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.76/5 (17投票s)

2009年5月21日

CPOL

3分钟阅读

viewsIcon

54553

开始 WPF 开发的思考准备。

引言

我必须说,WPF 是一种编程语言,其初始语法有些困难。我曾想知道这些绑定、路由最初到底在做什么?所有习惯于分层(多层)架构的 Windows 程序员都会想知道如何应对这些新概念。

但是,如果你开始结合 MVVM 设计模式来学习 WPF,那将是一件有趣的事情。它将业务层、数据层与视图分离开来。是的,这正是基本的三层架构概念的全部意义所在!!!看看 MVVM,人们很容易说它是为 WPF 量身定制的。

让我们尝试从 Windows .NET 2.0 迁移到 WPF 编程。我们将首先看到一个使用 .NET 2.0 开发的简单的员工管理系统。然后,我们将尝试使用 MVVM 设计模式来开发同一个系统。

回顾三层架构

在开发专业软件时,我们总是希望将 UI 与业务组件和数据分离开来。

ThreeTieredDesign.jpg

我们通常在每个 UI 后面维护一个业务对象,该对象充当 UI 和模型之间的中介。业务对象严格遵循“模式和实践”来使应用程序可扩展。附加的源代码包含一个演示简单 Windows 应用程序的示例。它有一个简单的 Windows Form,带有两个 ComboBox,一个用于选择雇主,另一个用于选择员工。选择员工姓名后,您可以看到他的详细信息。

转向 WPF

现在回到 WPF。我们的 UI 已经配备了绑定。然后我们总是有那些数据对象,它们在内存中保留可编辑的数据(数据库的内存表示)。现在我们可以将数据与 UI 绑定。绑定允许我们以双向方式更新数据。我们可以从数据更新 UI,也可以从 UI 更新数据。

DataBinding.jpg

让我们将上述 .NET 2.0 应用程序转换为 WPF。我们可以重用现有的数据层。所以我们有了数据。我们将开发 WPF 应用程序来显示信息。我们将遵循 MVVM 设计模式。我们有 XAML 作为视图(View)。我们有数据层作为模型(Model)。现在是将模型信息传递给视图的时候了。我们将设计一个层(ViewModel),它将模型封装起来,与视图隔离开。ViewModel 将充当视图的 DataContext。我们将在 XAML 绑定中使用 DataContext。所以当你从视图更新 ViewModel 时(由于绑定),ViewModel 将在内部更新模型。

因此,让我们从 MVVM(或 Josh Smith 的创意)中借鉴一些技巧来激发 WPF 编程。

MVVM.jpg

上面的图表描绘了如何使用 MVVM 设计模式开发 WPF 应用程序的详细信息。本文讨论了使用 MVVM 开发 WPF 应用程序,所以让我们记住 MVVM 的一些准则。

MVVM 的事实标准

  1. XAML 没有代码隐藏 - 完全干净的视图设计
  2. ViewModel 应作为 DataContext 传递给 UI 视图
  3. ViewModel 和 Model 不应访问任何 UI/View 组件、对象
  4. ViewModel 应继承 INotifyPropertyChanged。这是使 ViewModel 成为 Binding 源的要求
  5. ViewModel 应封装 Model - 这隐藏了数据存储的复杂性,对 View 来说是透明的

您还可以参考以下链接来提升您的 WPF 技能

历史

  • 2009年5月21日:初始发布
  • 2009年5月22日:小幅更新
  • 2009年6月6日:包含了一个示例,演示了 .NET 2.0 应用程序及其 WPF 对等版本
© . All rights reserved.