2009-08-26 11 views
24

私は簡単なWindowsアプリケーションをプログラミングしています。 DBサポートは必要ありません。 WinFormsの代わりにWPFを使用するのはなぜですか?WPFとWinFormsの違いは何ですか?

+2

あなたは良いアドバイスを得るためにもっと情報を提供するべきでしょうか。あなたのアプリは何をしていますか? –

答えて

10
  • はスタイル

(私はDBのサポートをして行うようになっているものが表示されない、トリガ、

  • が結合簡単にデータを利用するに
  • プログラムの外観をより細かく(すなわち任意の)コントロールを持っているために、 it)

    49

    明白な答えの1つは、WPFはWinFormsよりも豊かなユーザーエクスペリエンスを提供し、ユーザーインターフェイスなどでアニメーションを3Dでも可能にすることです。

    開発の観点からは、ユーザーインターフェイス(XAML)とビジネスロジック(VB.NETまたはC#)との分離は、常に良いことです。

    「WPF vs WinForms」のGoogle検索では、この問題について説明するページが多数表示されます。私はここにすべての彼らの調査結果を繰り返すことはしませんが、this pageは、いくつかの興味深い点を提起:WPFで

    1. データバインディングは、Windowsが提供フォーム何よりも優れています。
    2. UIとC#のビジネスロジックがきれいWPFに分離することができ
    3. ストーリーボード
    4. データ/コントロールテンプレート - Windowsの フォームが提供できるものよりもはるかにきれいな方法。
    5. スタイルはクールでシンプルです。そのように簡単に アプリケーション内のすべてのボタンをスタイルすると同じ外観と 感じるように簡単です。
    6. VSデザイナーが壊れても、XAMLを簡単にコーディングできます。
    7. UIバーチャライゼーション - グリッドに100K行のグリッドがあり、移動する市場は です。無料のUIビジュアライゼーション でなければ、パフォーマンスは恐ろしく になります。
    8. 3Dサポート。
    9. 科学的な何もしかし、UIの開発は、WPFに速く感じていない - は多分そのWPF アプリケーションは イテレーションの終わりにクーラーに見えるという理由だけで、または多分その理由 開発は本当に高速です。
    10. 私は私のチームにユーザーエクスペリエンスエンジニアを追加することができ、無C#の 知識を持つ彼は Expression Blendの中で魔法をかけると フロントオフィストレーディング・アプリケーションにビジネスユーザーの上に を獲得することが保証されて 変身を与えることができます。
    +0

    あなたの例 "3D"は、WInformsがOpenTK/GLControlを取得するという事実によって無効にされます。あなたの馬鹿げた一方的で偏見のあるリストからそれを削除してください。 – Krythic

    +0

    @Krythic私はちょうどそのリストを他の人に引用しているので、「私の」リストではありません。私がこの回答を投稿した2009年以来、物事は変わりました。そのため、特定の側面が変わった可能性があります。 – ChrisF

    14

    WPFは、Windowsデスクトップアプリケーションを開発するための最新のプラットフォームです。これは、懸念の分離を維持するアプリケーションを開発するための、最新の高度なハードウェアアクセラレーションフレームワークです。豊富なインタラクティブで高品質のユーザーインターフェイスを構築するための膨大な機能を提供する、2Dベクトルと3Dグラフィックスの高度なレンダリングをサポートしています。

    Winformsは、標準的なコントロールを使用して標準的なルックアンドフィールで「クラシック」のWindowsアプリケーションを開発するための基本的なプラットフォームを提供します。 WPFが提供する豊富なハードウェアアクセラレーション、ベクトル2Dおよび3D機能は提供していません。 Winformsアプリケーションでは、アプリケーションの動作とUI(ビュー)の結合がはるかに大きくなる傾向があり、アプリケーションを開発する際の柔軟性に欠けるプラットフォームとなります。

    どちらを選択するかは、あなたのニーズに完全に依存します。ベクターグラフィックス、3Dレンダリング、リッチでインタラクティブなアニメーション、最新のユーザーインターフェイスを作成する機能、および懸念の分離を維持する機能が必要な場合、WPFは間違いなく正しい選択です。それを必要とせず、シンプルなUIを作成して単純な問題を解決するだけであれば、winformsはニーズに合ったものになります。

    1

    画像のような豊富なユーザーインターフェイスをprevious questionに掲載したい場合は、WPFをお勧めします。見栄えの良いアプリケーションを簡単に作成できるだけでなく、Microsoftが今後推進する技術でもあります。 Winformsの開発はほとんどありません。

    2

    (MVVMパターンなどの正しい方法で記述されていれば)WPFアプリケーションのテスト機能については言及されていません。

    4

    WPFはハードウェアアクセラレーションをある程度利用できますが、時間が経つにつれて改善が見込まれます。

    また、XAMLのために、「やっている」、宣言的なものとプログラム的なもの、またはその両方を組み合わせたものがたくさんあります。

    マイクロソフトでは、winformsの開発を積極的に行っていないため、WPFを強く推進しています。

    WPFでは、「分解能に頼らない」設計が非常に簡単になります。これを実現するには、ロット多くの作業です。

    MVVMパターンはすでにコメントの1つに記載されています。実際のユニットテストとコードベースのGUIベースのテストを行うことができます。これはbig winです。

    3

    WinFormsとWPFの最も重要な違いは、WinFormsは単純に標準のWindowsコントロール(TextBoxなど)の上にあるレイヤーですが、WPFは最初から構築され、標準のWindowsコントロールに依存しないという事実ですほとんどすべての状況で。これは微妙な違いのように見えるかもしれませんが、実際にはそうではありません。Win32/WinAPIに依存するフレームワークを使って作業したことがあれば、間違いなく気づくはずです。

    この例の大きな例は、画像とテキストが表示されたボタンです。これは標準的なWindowsコントロールではないため、WinFormsはすぐにこの可能性を提供しません。代わりに、自分でイメージを描画し、イメージをサポートする独自のボタンを実装するか、サードパーティのコントロールを使用する必要があります。 WPFでは、基本的にコンテンツやさまざまな状態(例えば、触れられていない、ホバリングされた、押し込まれている)の境界線であるため、ボタンには何も含めることができません。 WPFボタンは他のほとんどのWPFコントロールと同様に、「ルックレス」ボタンです。つまり、内部にさまざまなコントロールを含めることができます。イメージとテキストを含むボタンが必要ですか? ImageとTextBlockコントロールをボタンの中に入れれば完了です!標準のWinFormsコントロールからこのような柔軟性を得ることはできません。そのため、画像などのボタンのようなコントロールの実装が単純な大きな市場があるのです。

    この柔軟性の欠点は、WinFormsで必要なシナリオ用に作成されたものであるため、WinFormsで非常に簡単だったことを達成するために、より厳しく作業しなければならないことがあることです。WinForms ListViewItemが1行のコードで行うような、イメージといくつかのきれいに整列したテキストでListViewを作成するためのテンプレートを作成しているのは、最初から感じています。

    これはちょっとした違いでしたが、WPFを使用して作業するにつれて、実際にWPFは他の多くの相違点の根本的な理由であることに気付くでしょう。悪いもはやWindowsのやり方に制約はありませんが、このような柔軟性を得るためには、Windowsのやり方を実際に探しているときにもう少し多くの作業をしなければなりません。

    +5

    は、少なくともあなたが単語を忘れてしまった記事にリンクする優しさがあります... http://www.wpf-tutorial.com/about-wpf/wpf-vs-winforms/ – obe

    関連する問題