マークアップと分離コード

WPF アプリケーションの特徴は、マークアップ/分離コードによる分業化の促進です。


Extensible Application Markup Language〔XAML〕を使って「外観」を規定しながら、プログラミング言語(分離コード)を使って「動作」を実現します。このように、外観/動作を分離すると、デザイナー/プログラマーの専門分野を活かした棲み分けが可能になり、アジャイル開発を促進します。


さらに、プログラマーの棲み分けも可能です。分離コードを記述するのに、各自が得意とする .NET Framework プログラミング言語C#/Visual Basic など)を利用できます。そこに、新たな選択肢として、IronPython が加わることになります。

部品を配置する:LoadXaml

次に、コントロール部品を生成するコードを記述する代わりに、これらを XAML ファイルから取り込みます。それを支援するのが、関数 LoadXaml です。


XAML ファイル apple.xaml には、次のように記述されています。

<Button Name="button"> Are you happy? 

ここでは、ボタンの大きさを指定していません。WPF 版では(Windows Forms 版と違って)テキストボックスの大きさが自動的に調整されます。Windows Forms 版で(幅が狭くて)ボタンにある文字列の一部が隠れていたのは、そのためです。

部品を識別する:Walk

ウィンドウに配置されたコントロール部品を識別できると、コードを記述するときに便利です。それを支援するのが、関数 Walk です。


controls = {}
for e in Walk(win):
if hasattr(e, "Name"):
controls[e.Name] = e
button = controls["button"]

ここでは、辞書 controls を使って(ウィンドウ win に配置された)コントロール部品を管理します。すると、文字列キーを使って、各コントロールを識別できます。この手法は、種々のコントロール部品を統一的に扱いたいときには便利です。XAML ファイル apple.xaml には、次のように記述されています。

このボタンを識別するために、プロパティー Name="button" を設定しておきます。すると、この文字列を使って、あるボタン controls["button"] を識別できます。ただし、変数 button を使ってこのボタンを参照するためには、工夫が必要です。

ここから先は…

マークアップ/分離コードを概観したので、コントロール(ListBox/RadioButton/Slider)の特徴を、Windows Forms と比較します。その違いに戸惑うかもしれませんが、サンプルファイルを参考にしながら、少しずつその理解を深めてください。


Previous|2/3|Next