“WinFormとWPFの違いは何ですか?”とよく聞かれます。
考虑这个问题很简单回答,但是总是没有系統的分析过,今日特别书写一个个个人的観点的文章记录総括。

WinForms
名前が示すように、基本的には. NET Frameworkに導入されたGUIベースのアプローチです。WPFやSilverlight以前は、GUIを構築するための. NETの主要なAPIでした。ランタイムとオペレーティングシステム以外に、スタンドアロンアプリケーションを開発するためのサポートは必要ありません。インターネットに接続しながら、導入、更新、管理、オフラインでの作業が容易なアプリケーションを開発できます。Win Formsの開発は、UIコントロールをキャンバス上にドラッグアンドドロップするだけであるため、非常に簡単です。デスクトップアプリケーションを開発するための古いプラットフォームです。
WPF(Windows Presentation Foundation)
WPFは、その名の通り、Windowsまたはデスクトップクライアントアプリケーションを開発するためのUIフレームワークです。これは、. NET Frameworkで使用されるGUIフレームワークの最新のアプローチです。Windowsオペレーティングシステム上で動作するWindowsクライアントアプリケーションや次世代のWindowsフォームを開発するために導入されました。Windowsクライアントアプリケーションの開発、実行、実行、管理、および処理に必要なすべての機能を備えています。
手の難易度が異なる
windowformの難易度はwpfより低く、wpfはxamlの文法を学ぶだけでなく、mvvmを学ぶだけでなく、winformの大多数はコントロールをドラッグするだけで簡単にプロジェクトを始めることができます。
レンダリングメカニズムが異なる
WinForm GDI+ペイント、WPF DirectXレンダリングペイントWinForm GDI+ペイントWPF DirectXれんだりんぐぺいんと
GDI + :编写图形程序时需要使用 GDI(GraphicsDeviceInterface,图形设备接口),从程序设计的角度看,GDI 包括两部分:一部分是 GDI 对象,另一部分是 GDI 函数。GDI 对象定义了 GDI 函数使用的工具和环境变量,而 GDI 函数使用 GDI 对象绘制各种图形,在 C#中,进行图形程序编写时用到的是 GDI+(GraphiceDeviceInterfacePlus 图形设备接口)版本,GDI+是 GDI 的进一步扩展,它使我们编程更加方便。
简单理解就是2D绘图
DirectX(Direct eXtension,缩写:DX)是由微软公司创建的一系列专为多媒体以及游戏开发的应用程序接口。旗下包含 Direct3D、Direct2D、DirectCompute 等等多个不同用途的子部分,因为这一系列 API 皆以 Direct 字样开头,所以 DirectX(只要把 X 字母替换为任何一个特定 API 的名字)就成为这一巨大的 API 系列的统称。
简单理解就是既能2D,也能3D绘图
简单理解,WPF理论上可以写更牛X的界面。渲染速度更快,复杂度更高
コアメカニズムが異なる
Winformイベント駆動、WPFデータ駆動
数据驱动:数据第一,控件第二。数据的变化带动 UI,
便于前后端解耦。
事件驱动:通过事件绑定方式,实现控件各项事件的触发来调用业务层逻辑使程序有序运行,
极容易造成前后端高耦合。
コントロールの存在形態
Windows GDIまたはWin Formで開発された複雑なGUIアプリケーションは、グリッドなどの多数のコントロールを使用します。各コントロールまたはグリッドセルは小さなウィンドウであり、ウィンドウハンドルを使用します。コントロールベンダーは多くの最適化方法を提供していますが、メモリのアウトや“ウィンドウハンドルの作成エラー”が発生し、プログラムが終了します。
WPFはコントロールの表示方法を完全に変更し、コントロールはもはやウィンドウを使用せず、ウィンドウハンドルを占有しない。理論的には、WPFにメインウィンドウが1つしかない場合、WPFは単一のウィンドウハンドルしか使用しません(ディスパッチャに使用されている隠しウィンドウを無視した場合)。したがって,WPF GUIプログラムはウィンドウハンドルが不十分であることはない.
WinForm VS WPF
| 違いのポイント | WinForms | WPF |
|---|---|---|
| レンダリング方式 | GDI+ | DirectX |
| レンダリング速度 | ゆっくりと。 | 急げ。 |
| 手が難しい。 | 普通の人 | もっと難しい。 |
| 駆動機構は | イベント駆動型 | データ駆動型 |
| 前後端の分離 | 分離しにくい | 分離しやすい |
| 適応する。 | もっと難しい。 | Easyシングル |
| ベクトル2 Dおよび3 D機能を提供 | いいえ、いいえ | はいはい。 |
| メモリが必要。 | 少ない。 | もっと多くの |
| インターフェイスの仮想化をサポートし、大規模データセットを容易に処理できます。 | サポートなし。 | サポートする。 |
| コントロールはウィンドウとして存在する | はいはい。 | いいえ、いいえ |