WPF(Windows Presentation Foundation)の説明は、「 WPFは .NET Framework 3.0 以降に含まれるユーザインタフェースサブシステムです。」
「ユーザインタフェースとロジックを明確に区別する一貫したプログラミングモデルを提供します。」
と書かれています。
あくまで”プログラミングモデル”ですので、WPFは「プログラミング言語」ではありません。
ユーザーインターフェースとロジックを明確に区別する
いままでの「Windows フォームアプリケーション」では、Visual Studioでプロジェクトを生成すると、最初にForm1というSystem.Windows.Forms.Formの派生クラスのフォームが用意されています。
ボタンを1つ置いて、ボタンを押したときの処理を書くには、
- デザイナでForm1にbutton1というボタンを置く
- このbutton1をダブルクリックする
- Form1.csにbutton1_Clickというイベントハンドラができる
- イベントハンドラにコードを書く
だと思います。
WPFも、
- デザイナにボタンを置く
- ボタンをダブルクリックする
- クリックしたときの処理(button1_Click)ができる
- この”button1_click”に処理を書く
という順番に違いはほとんどありませんし、こうするだけでボタンを押したときの処理は実行できます。
WPFでは何が違うのか
まず、WPFは画面を作る「ソースコードの構成」が違います。
Form1という名前を例にすると、
- Windowsフォームでは”Form1.Designers.cs”と”Form1.cs”
- WPFは”Form1.xaml”と”Form1.xaml.cs”
で構成されています。
ただ、ファイル名や構成がちょっと違うということではなく、この2つの「ファイルの関係」が全く違います。
Windowsフォームで”Form1.Designers.cs”と”Form1.cs”は、1つの画面に関するクラスのコードを2つのファイルに分けて記述しています。
図で示すとこのようになります。
ですので、この2つのファイルに記述されているプログラミング言語はC#です。
ところが、WPFでは、”Form1.xaml”には、画面の表示に関する記述(ユーザーインターフェース)のみ。”Form1.xaml.cs”は、画面の振る舞い(ロジック)のみが記述されています。
記述されているのは、”Form1.xaml”が XAML、”Form1.xaml.cs”はC#です。
”ユーザインタフェースとロジックを明確に区別”していますが、ソースコードのほうにC#のコードは今まで通り書くことができます。