TOC

This article has been localized into Japanese by the community.

WPFについて:

WPF対WinForms

前の章ではWPFとは何であり、WinFormsについても少し説明しましたが、この章ではこの2つを比較してみよう。この2つは同じ目的を果たす為のものですが、多くの違いがあります。もし今までにWinFormsを使用したことが無くて、また特にWPFが初めてのGUIフレームワークとなる方は、この章を飛ばしてしまっても大丈夫ですが、違いが気になるならば読んでみてください。

WinFormsとWPFの最も重要な違いは、WinFormsは単にごくWindows 標準コントロール(例えばテキストボックス)の上のレイヤーにすぎないのであるが、WPFは一から組み立てられたものであり、どんな状況でもWindows 標準コントロールに依存することが無い。これはほんの小さな違いに感じられるかもしれないが、もし今までに何かWin32/WinAPIに依存するフレームワークで作業をしたことがあるならば、そうでないことは明らかだ。

まず一つはっきりとした例を挙げると、画像とテクストが存在するボタンである。これはWindows 標準コントロールではないので、WinFormsにはボックスの外にそれを使用する術を持たない。それ故に画像をサポートするボタンを含む自らのボタンを描画するか、サードパーティーのコントロールを使用しボタン作成しなければならない。しかしWPFでは何でもボタンに挿入することができる。なぜなら、ボタンは本質的に枠組みと内容と色々な状態であるにすぎないからだ。(例、Untouchedアンタッチ、Hovered ホバー、Pressed プレス)WPFのボタンは、他の殆どのWPFコントロールと同様に"look-less"である。ということは、その中に他のコントロール域を設けることができる。ボタンに画像とテキストが欲しい?それならただボタンの中に画像を取り入れ、テキストブロックのコントロールを置くだけで、完了!!!簡単に言えば、これだけの適応性はWinFormsの標準コントロールで得ることは出来ない。それ故に画像やその他を置けるボタンなどのコントロールをより簡単に実行できるものが大当たりしているのだ。

このWPFの柔軟性は、時にはWinFormsでは簡単に処理することができるが、WPFではより面倒な作業をしなくてはならないという欠点に繋がる。なぜならば、WPFはに個々の使用者のニーズに対応できるようにできているため、真っ白なキャンバスにそれぞれの思いを描きこんでいくようなものである。少なくとも初めのうちは、自ら画像と綺麗に整列したテキスト付きのListViewを作るためのテンプレートを作らなければならないが、そんなことはWinFormsではListViewアイテムが簡単に1行のコーディングでやってのけられることである。

これが第一の違いでありWPFを使用し作業するうちに、多くの違いが存在する中これが事実上根本的な理由であることにきっと気が付くであろう。WPFは、単純に独立した方法で物事を処理していくのだが、それが同時に長所であり、短所でもある。これに伴い、ウィンドウズ的な物事の処理の仕方の制約からは解放されるが、全てが自由にオープンにできるため、ウィンドウズ的な作業の結果を望む場合は、それなりの作業を自分で課していかなけばならない。

以下、完全に主観的なWPFとWinFormsの長所をまとめリストを作成してみた。たぶんこれで漠然としたWPFに関する着想が得られるだろう。

WPFの長所

  • 新しいもなので、今それに関して存在するスタンダードのものと調和できる。
  • マイクロソフトは多くの新しいアプリケーションにこれを使用している。(例、Visual Studio)
  • 適応性があるので自ら書き込んだり、新しいコントロールを購入せずに多くの事ができる。
  • サードパーティーのコントロールを使用する必要がある時に、コントロールの開発者は新しいWPFに焦点を置いている場合がほとんどである。
  • XAMLは、GUIの作成と編集を簡単にし、作業をデザイナー(XAML)とプログラマー(C#, VB.NET etc.)とに分配する。
  • データバインディングは、データとレイアウトの分離をより明らかにすることを可能にする。
  • ハードウェアを加速した状態で使用できるので、GUIを作成するにあたりより良い環境が持てる。
  • ウィンドウズアプリケーションとウェブアプリケーションの両方にユーザーインターフェースを作成することを可能にする。

WinFormsの長所

  • *古いものであるので、それなりに使用され利用価値がが実証されている。
  • サードパーティから多くのコントロールが提供されており、購入や無料での入手ができる。
  • 現状では、Visual Studio のデザイナーを使えば、自分で多くの作業をする必要があるWPFに比べて、WinForms に軍配があがる。