[WPF] WPF入門 ~XAML編 [概要]~

投稿日 : 2008年12月29日 18:06
今回よりWindows Presentation Foundation(以降WPF)に関するエントリを書きたいと思います。
WPFの詳細な概要についてはここより参照してください。

まずはWPFで重要な要素であるXAMLについてからです。
XAMLとは「Extensible Application Markup Language」の略で、WPFでのUI要素を宣言的に定義するマークアップ言語です。
MSDNではこのように説明されています。

XAML は、.NET Framework 3.0 プログラミング モデルにおける UI の作成を単純化します。表示される UI 要素を宣言的 XAML マークアップで作成し、分離コード ファイルを使用して UI 定義をランタイム ロジックから分離させることができます。

これはASP.NETで採用されている、HTMLとコードビハインドの関係と似ています。
XAMLではUIの定義をXAMLを使用し宣言的に定義し、アプリケーションロジックをランタイムコードに記述してアプリケーションを構築します。
またこのようにも説明されています。

他のほとんどのマークアップ言語と違って、XAML ではマネージ オブジェクトのインスタンス化が直接表現されます。

WPFでのオブジェクトのインスタンス化の基本方法はXAMLを使用するか、ランタイムコードを使用してオブジェクトのインスタンス化を実現します。
宣言的マークアップ言語と言うだけあり、XAMLではインスタンス化を行う事は出来ますが、処理を記述する事は出来ません。
逆にランタイムコードはオブジェクトのインスタンス化を行う事も出来ますし、処理を記述する事も出来ます。

では何故WPFではXAMLが採用されたのでしょうか?

今までのWindows Formアプリケーションでは、UIのデザインは全てC#またはVBのコードで構築されており、UIデザインを行う場合VisualStudioのデザイナより自動生成されるコードによって実現されており、またこの自動生成されたコードは基本的には触ってはいけない物でした。
WPFではXAMLを用いて宣言的にUIを構築する事ができ、また今までのWindows Formアプリケーションと同じようにVisualStudioのデザイナを使用して構築する事も出来ます。
この事からUI構造の可視化を得る事ができ、UI設計とロジックの分離が行え、不必要なUI定義をランタイムコードより除く事ができ各設計単位を明確に分ける事が出来ます。

説明はここまでとして、まずは簡単なXAMLの例です。

<Window />

これはSystem.Windows.WindowクラスをXAMLで宣言している例です。
XAMLはXMLを元に作られており、XMLのルールに基づいて記述します。
XAMLでは型定義を<typename></typename>または<typename />という形で要素を用いて定義します。

つぎはプロパティの定義です。

<Window Width="400" Height="300"/>

プロパティの定義は属性を使用して宣言します。
またイベントハンドラの定義です。

<Window Width="400" Height="300" Loaded="Window_Loaded"/>

このようにイベントハンドラの定義も属性を用いて宣言します。

次はButtonを一つ内包したWindowクラスの例です。

<Window Width="400" Height="300" Loaded="Window_Loaded">
    <Button Content="Click Me!" />
</Window>

今までの例のようにASP.NETでのUI定義に凄く似ているのが感じれるかと思います。
上記例は足りない物が多く、実際にはコンパイルする事は出来ませんが、感覚的にXAMLの宣言がどのような物か感じれれば大丈夫です。

今回はXAMLの概要を簡単に説明しましたが、今後徐々に掘り下げていき、XAMLの使用方法が理解出来るような構成で書いていきたいと思います。

to be continue・・・
コメントの入力
タイトル
名前
Url
コメント