2009-02-26 15 views
40

私はWPFを見てきましたが、(15分を除いては、この質問を促しました)WPFを実際に使ったことはありませんでした。私はこのpostを見ましたが、実際にはWPFの "Flash"についてです。では、Windows FormsアプリケーションとWPFアプリケーションの違いは何ですか?WPFとは何ですか?また、WinFormsとの比較はどうですか?

+5

私はこれが私にとって有用であることを発見しました[clear-code.blogspot.com/2012/04/what-is-wpf。html](http://clear-code.blogspot.com/2012/04/what-is-wpf.html) –

答えて

54

WPFは、WinFormsではないベクターグラフィックスベースのUIプレゼンテーションレイヤーです。それはなぜ重要な/面白いのですか?ベクトルベースであることにより、プレゼンテーションレイヤーは、歪みなくUIエレメントを任意のサイズに円滑に拡大縮小することができます。

WPFはまた、構成可能なプレゼンテーションシステムです。つまり、ほとんどのUI要素は他のUI要素で構成できます。これにより、簡単なものから複雑なUI要素を簡単に構築できます。

WPFも完全にデータバインディングに対応しています。つまり、UI要素のプロパティを.NETオブジェクト(またはオブジェクトのプロパティ/メソッド)、別のUI要素のプロパティ、またはデータにバインドできます。はい、WinFormsはデータバインディングをサポートしますが、はるかに限定された方法です。

最後に、WPFは開発者として必要な振る舞いであり、誰かがまったく違うように見せかけることができるため、リストボックスを使用することができる「スキン可能」または「テーマ設定可能」です。

画像のリストボックスを考えてみましょう。コンテンツを実際にイメージにしたいが、依然としてリストボックスの動作が必要です。これは、単純にリストボックスを使用し、コンテンツのプレゼンテーションをテキストではなく画像を含むように変更するだけで、WPFで行うのはまったく簡単です。

+0

私は、WinFormでは、どんなプロパティにもほとんどバインドできます。そのため、DataBindings.Add()はstring、object、stringを取ります。したがって、リフレクションを使用してプロパティを結合することができます。 – Quibblesome

+0

SilverlightはWPFのXAML機能のサブセットを使用しているため、WPFベースのアプリケーションをプログラミングする方法が分かっているので、Silverlightアプレットはとても簡単です。 –

+0

したがって、ユーザーはWPFとWinFormの違いを伝えることができますか? – Kredns

9

質問に答えるには、WPFアプリケーション Windowsアプリケーションです。 WPFは、リッチなWindowsアプリケーションを作成するためのMicrosoftの新しいフレームワークです(実際には、.NET Framework 3.0のサブシステムです)。これはWinFormsの最終的な置き換えを意味します(しかし、採用率はMSが期待していたよりもはるかに低速です)。

17

これを見る良い方法は、Winformsが何であるかを尋ねることから始まるかもしれません。

WinformsとWPFはどちらも、アプリケーションのUIレイヤーをコード化しやすくするためのフレームワークです。ここの周りの本当に古い人は、Windows版「Hello、World」を書くのに4ページ程度のコードを書くことができるかどうかについて話すことができます。また、岩石はそれほど柔らかくなく、コーディング中に巨大なトカゲと戦わなければなりませんでした。 Winformsライブラリとデザイナーは多くの一般的なタスクを必要とし、書きやすくします。

WPFは同じことをしますが、Winformsが必ずしもUIレイヤーの一部であるとは考えていなかった多くの要素を含めることに加えて、これらの共通のタスクにははるかに視覚的に興味深いものが含まれている可能性を認識しています。 WPFがコマンド、トリガ、およびデータバインディングをサポートする方法は、フレームワークの大きな部分ですが、その主な理由は、Winformsが最初に存在していたのと同じ根本的な理由です。

WPFの改善点は、完全にカスタムコントロールを作成するか、カスタマイズ機能が限定された単一のコントロールセットを使用するかを選択する代わりに、コントロールの機能をその外観。コントロールがXAMLでどのように見えるかを記述し、コントロールがコード内でどのように動作するかを区別する能力は、Webプログラマーが慣れているHTML /コードモデルに非常に似ています。

優れたWPFアプリケーションは、優れたWinformアプリケーションと同じモデルに従います。 UIレイヤーからできるだけ多くのものを保ちます。アプリケーションとデータレイヤのコアロジックは同じでなければなりませんが、ビジュアルをより印象的なものにする簡単な方法があります。 WPFを学ぶことを望んでいるなら、実際にはWinformsとほぼ同じように使用してから、それを把握しながら他の機能をリファクタリングすることから始められます。これの優れた例として、私は、BabySmashの開発に関するScott Hanselmanの一連のブログ記事、which start hereを強くお勧めします。これは、コードと思考の両方で、プロセスの大きなウォークスルーです。

+1

WPFで始めるときにWinFormsのやり方をしようとすると、多くの問題が発生しました。 WPF、IMOで作業を開始するときには、できるだけクリーンな状態で作業を開始する方がよいでしょう。 – Andy

+0

@Andy私はそれがWPFをより良く理解することを私に強いられたのはScottのアプローチだと言わざるを得ない。とにかく、私のコードをとにかく動かすために使用しなければならなかったハック、そして最終的に私が実際に私に学ばせた最終的な「正しい」解決策だったと思います。 – Raumornie

3

ここでスタート、動画の数十と数十があります:http://www.windowsclient.net/learn

はこの場合、マーケティングschpielはかなり良いです:

**「Windowsフォームその.NET FrameworkのクラスのセットですWPFとWindows Formsの相互運用性を.NET 3.5フレームワークで実現することができます」*

* "WPF、Microsoft .NET Frameworのコンポーネントk 3.5は、次世代のWindowsユーザーエクスペリエンスの構築を可能にします。 WPFは、UI、メディア、ドキュメント、ハードウェアアクセラレーション、ベクターグラフィックス、さまざまなフォームファクタに対するスケーラビリティ、インタラクティブなデータの視覚化、優れたコンテンツの可読性をサポートします。データバインディング(あなたがデータで作業している場合は、WPFを使用しています。)のWinForms技術はGDI/GDI +に依存するが

3

WPFは。 W indows P resentation F oundationの略で、WPFはの上に直接構築されていますDirectXを使用すると、.NET Frameworkクラスライブラリを使用しながら、WinFormsでできること以上に多くのことを行うことができます。 2D/3Dゲーム、プレゼンテーションなどが含まれます。 WPFはFlash(swf)ムービーに似ていて、要素「Movie」はありません。 WPFは.NETに基づいており、リッチクライアントサイドWeb対応アプリケーションを構築するために使用できます。

1
  1. WPFは、基本的にWindowsプラットフォーム用のグラフィカルユーザーインターフェイスを作成するための新しいAPIです。
  2. WPFは、視覚的に見事なユーザーインターフェイスとともに、Windowsクライアントアプリケーションを構築するための単なる次世代のプレゼンテーションシステムです。
  3. WPFは、古いGDI/GDI +サブシステムに頼るのではなく、DirectX(Direct3D)の上に構築されています。
  4. WPFはベクトルグラフィックスベースのUIプレゼンテーションレイヤーで、ベクターレイヤーであるため、プレゼンテーションレイヤーは、UIエレメントをゆがみなしで任意のサイズにスムーズに拡大縮小できます。
  5. WPFは「スキン可能」で「テーマ対応」です。これは、WPFがあらゆるUIコントロールのルックアンドフィールを変更できることを意味します。
0

実装の観点から見ると、WPFは厳密に強制されるモデルビュービューモデルMV-VMアーキテクチャを使用し、ビューはカスタムマークアップ言語であるXAMLで定義され、ビューモデルはクラスにはアクセス可能なプロパティがあり、モデルは事実上データアクセスレイヤーです。 WinFormsでは、このような明示的な分離はありませんが、慣習的には異なるアスペクトが異なるC#ファイルにグループ化されていても、すべての静止コードがグループ化されています。実際には、これによりWPF開発はWeb DOM開発のようになり、WPFフレームワークはバックグラウンドで実行され、仲介します。

関連する問題