C# 什么是WPF,它与WinForms相比如何?

C# 什么是WPF,它与WinForms相比如何?,c#,wpf,windows,C#,Wpf,Windows,我一直在看WPF,但我从未真正使用过它(除了15分钟,这引发了这个问题)。我看了这个,但它实际上是关于WPF的“闪光”。那么Windows窗体应用程序和WPF应用程序之间的区别是什么呢?要回答您的问题,WPF应用程序就是Windows应用程序。WPF是微软的新框架(实际上,它是.NETFramework3.0的一个子系统),用于编写丰富的Windows应用程序。它是WinForms的最终替代品(尽管无可否认,采用率比微软希望的要慢得多)。WPF是一种基于矢量图形的UI表示层,而WinForms不

我一直在看WPF,但我从未真正使用过它(除了15分钟,这引发了这个问题)。我看了这个,但它实际上是关于WPF的“闪光”。那么Windows窗体应用程序和WPF应用程序之间的区别是什么呢?

要回答您的问题,WPF应用程序就是Windows应用程序。WPF是微软的新框架(实际上,它是.NETFramework3.0的一个子系统),用于编写丰富的Windows应用程序。它是WinForms的最终替代品(尽管无可否认,采用率比微软希望的要慢得多)。

WPF是一种基于矢量图形的UI表示层,而WinForms不是。为什么这很重要/有趣?通过基于向量,它允许表示层平滑地将UI元素缩放到任意大小而不失真

WPF也是一个可组合的表示系统,这意味着几乎任何UI元素都可以由任何其他UI元素组成。这允许您轻松地从简单的UI元素构建复杂的UI元素

WPF还完全支持数据绑定,这意味着您可以将UI元素的任何属性绑定到.NET对象(或对象的属性/方法)、另一个UI元素的属性或数据。是的,WinForms支持数据绑定,但方式非常有限

最后,WPF是“可皮肤化”或“主题化”的,这意味着作为开发人员,您可以使用列表框,因为这些是您需要的行为,但有人可以“皮肤化”它,使其看起来完全不同


想象一个图像列表框。您希望内容实际上是图像,但仍然希望列表框行为。在WPF中,只需使用列表框并将内容表示形式更改为包含图像而不是文本,这是一件非常简单的事情。

了解这一点的好方法可以从询问Winforms到底是什么开始

Winforms和WPF都是设计用于使应用程序的UI层更易于编码的框架。这里真正的老年人可能会说,编写windows版本的“Hello,World”可能需要4页左右的代码。而且,当时的岩石要软得多,我们必须在编码时与巨型蜥蜴搏斗。Winforms库和设计器承担了许多常见任务,使它们更易于编写

WPF做了同样的事情,但是意识到这些常见的任务现在可能包含更多的视觉上有趣的东西,除了包括很多WiFras并不一定是UI层的一部分。WPF支持命令、触发器和数据绑定的方式都是框架的重要组成部分,但其核心原因与Winforms最初存在的核心原因相同

WPFs的改进在于,现在您可以将控件的功能与其外观分离开来,而不是让您选择从头开始编写一个完全自定义的控件,或者强制您使用一组具有有限自定义功能的控件。描述控件在XAML中的外观并将其与控件在代码中的工作方式分开的能力与web程序员使用的HTML/代码模型非常相似


好的WPF应用程序遵循与好的Winforms应用程序相同的模型;尽可能多地保留UI层之外的内容。应用程序和数据层的核心逻辑应该是相同的,但现在有了更简单的方法来让视觉效果更令人印象深刻,这可能就是为什么您在应用程序和数据层上看到的大多数信息都涉及到更浮华的视觉内容。如果您希望学习WPF,实际上可以从几乎完全像Winforms一样使用它开始,然后在掌握其他功能时重构中的其他功能。作为一个很好的例子,我强烈推荐Scott Hanselman关于Babymash开发的一系列博客文章。这是一个很好的过程演练,无论是在代码还是在思想上

从这里开始,这里有几十个视频:

在这种情况下,营销策略相当不错:

**“Windows窗体是.NET Framework中的一组类,它支持快速开发富Windows客户端应用程序,并具有用于用户界面控件和图形的功能强大的可扩展库。您可以通过.NET 3.5 Framework中的WPF Windows窗体互操作性将WPF合并到Windows窗体应用程序中。”*

*“WPF是Microsoft.NET Framework 3.5的一个组件,它使您能够构建下一代Windows用户体验。WPF支持用户界面、媒体、文档、硬件加速、矢量图形、不同形状的可扩展性、交互式数据可视化和优异的内容可读性。”**

使用WPF,您可以获得更好的图形支持,更强大和灵活的数据绑定(如果您正在使用数据,使用WPF)。

WPF代表Windows演示基础。虽然WinForms技术依赖于GDI/GDI+,但WPF直接构建在DirectX之上。这意味着您可以在使用.NETFramework类库的同时,做比WinForms多得多的事情。您可以构建丰富的用户界面、2D/3D游戏、演示等等。WPF很像Flash(swf)电影,没有“电影”元素。WPF基于.NET,可用于构建支持web的富客户端应用程序

  • WPF本质上是一种新的API,用于为Windows平台创建图形用户界面
  • WPF不仅仅是一个用于构建Windows客户端应用程序的下一代演示系统,它还提供了令人目眩的用户界面
  • WPF构建在DirectX(Direct3D)之上,而不是依赖于旧的GDI/GDI+子系统
  • WPF是一个基于矢量图形的UI表示层,并且基于矢量,它允许表示层平滑地将UI元素缩放到任意大小,而无需使用d