WPFのアプリケーション形態
WPFは以下の2種類のアプリケーション形態で使用することができます。
- スタンドアロンWindowsアプリケーション
- XAMLブラウザアプリケーション
その他、WPFの名前が使われている技術としてWPF/Eがあります。
スタンドアロンWindowsアプリケーション
通常のWindows Formsアプリケーションと同様の、スタンドアロン型のアプリケーションです。これまで敷居が高かった3Dなどの技術を用いたアプリケーション開発に活用できます。また、通常のWindows Formsで実装できるアプリケーションであっても、前述のように、XAMLファイルを作成するデザイナとプログラム部を実装する開発者が上手に協働しながら、見栄えの良いアプリケーション開発を行うことができます。
XAMLブラウザアプリケーション(XBAP)
Webブラウザ上で動作する、XAMLを使用したプログラムです。ただ、WPFを使用している関係上、すべてのWebブラウザで動作するわけではなく、.NET Framework 3.0をインストールしたWindows上で動作するInternet Explorer 6.0以降のWebブラウザ(およびInternet Explorerと互換性を持つブラウザ)でしか使用することができません。従ってXAMLブラウザアプリケーションはFlashやAjaxのように汎用的に使用できる仕組みではありません。汎用的な用途には後述するWPF/Eを使用してください。
XAMLブラウザアプリケーションは、これまでノータッチデプロイメント(.NET Framework 1.0/1.1)・ClickOnce(.NET Framework 2.0)などの技術を用いて開発していた、リッチクライアント開発に適していると言えるでしょう。
WPF/E
WPF/E(Windows Presentation Foundation/Everywhere)とは、名称からも分かる通り、WPFをさまざまな環境で動作させるためのフレームワークです。具体的には、Windows以外のOS(現在のところMac OS Xのみ)、Internet Explorer以外のWebブラウザ(Firefox/Safariなど)でXAMLをベースとしたWPF/Eアプリケーションを動作させることができます。ActiveX・Firefoxプラグインなどで提供されるWPF/EのランタイムをWebブラウザにインストールすることで、WPF/Eアプリケーションに対応します。
WPFアプリケーションと大きく異なるのは、実装言語として、C#/VB.NET以外にJavaScriptを使用することができる点です。JavaScriptへ対応する関係上、WPFアプリケーションとは異なるプログラミングモデルを持っており、XAMLという共通部分はありますが、WPFとは異なるテクノロジとして位置づけるのが適切でしょう。
WPF/Eは対応するクライアントの範囲が広いため、Flashの代替ソリューションとして、アニメーションやWebアプリケーションと連携する部分などで活用可能です。その場合、使い慣れた.NET言語を開発に使用できる点などがメリットとなります。
WPFで提供されるコントロール群
WPFはWindows Formsのスーパーセットであり、その他多数のコントロールを提供しています。ここではコントロールが所属する名前空間および所属するコントロールのうち代表的なものを紹介します。詳細についてはWindows SDKのドキュメントを参照してください。
名前空間 | 概要 |
System.Windows | アプリケーションやウィンドウなど、WPFのベースとなるコントロールが含まれる |
System.Windows.Controls | ボタンやテキストボックスなど、ウィンドウ上に配置するコントロールおよびコントロールのコンテナであるパネルが含まれる |
System.Windows.Shapes | 図形描画コントロールが含まれる |
System.Windows.Media | ベクタグラフィック・オーディオ・ビデオ・テキストなどのメディアを扱うコントロールが含まれる |
System.Windows.Media.Animation | タイムラインベースでのアニメーションを扱うコントロールが含まれる |
System.Windows.Media.Media3D | 3D機能を扱うコントロールが含まれる |
コントロール名 | 概要 |
Application | WPFアプリケーションを表すコントロール |
Clipboard | クリップボードに関連した機能を提供するコントロール |
ContentElement | XAMLコントロールの基底クラス |
TextDecoration | テキスト修飾機能を提供するコントロール |
Window | WPFのウィンドウ・ダイアログを表すコントロール |
コントロール名 | 概要 |
Border | 他のコントロールの境界線を描画するコントロール |
Button | ボタンコントロール |
Canvas | コントロールの相対座標を指定して配置するパネル |
CheckBox | チェックボックスコントロール |
DockPanel | コントロールの位置を上下左右で指定して配置するパネル |
Grid | 行と列で構成されるグリッド形式でコントロールを配置するパネル |
コントロール名 | 概要 |
Ellipse | 楕円描画コントロール |
Line | 線描画コントロール |
Polygon | 多角形描画コントロール |
Rectangle | 矩形描画コントロール |
コントロール名 | 概要 |
Brush | 描画ブラシの基底クラス |
GradientBrush | グラデーションブラシコントロール |
GradientStop | グラデーションポイントを指定するコントロール |
MediaPlayer | メディア再生コントロール |
RotateTransform | 回転コントロール |
ScaleTransform | 拡大縮小コントロール |
コントロール名 | 概要 |
Storyboard | アニメーションの内容を指定するコントロール |
Clock | タイムライン上のタイミングを指定するコントロール |
ColorAnimation | 他のコントロールの色プロパティを変化させるコントロール |
DoubleAnimation | 他のコントロールの実数値プロパティを変化させるコントロール |
コントロール名 | 概要 |
Camera | 3D空間上のカメラを表すコントロール |
GeometryModel3D | 3Dオブジェクトモデルを表すコントロール |
Light | 3D空間上の光源を表すコントロール |
Material | 3Dオブジェクトのマテリアルの基底クラス |