Beta Experience セミナー「XAML 開発」
木曜日は「Beta Experience セミナー」として「XAML 開発」の講師を担当しました。XAML(eXtensible Application Markup Language)は、Windows Presentation Foundatoin(WPF)におけるユーザーインターフェース記述言語です。ちょっと地味なテーマだったかもしれません。
まず、WPF のポイントは Windows フォームのように2次元UIばかりでなく、3次元の操作、あるいはメディアやアニメーションなどのさまざまな要素を一貫した手法で扱えるようにしたということです。また、XAML というのは誤解を恐れずに言えば Web 開発における HTML のようなものです。実際、ASP.NET で(asp タグが埋め込まれた)html とコードビハインドを処理するのと同じように、XAML では UI の要素を定義した XML 形式のファイルとコードビハインドを処理します。もちろん、その表現力には大きな差があります。
次のコードは、ボタンを定義し、その変換属性として「10度傾ける」という指定をしたものです。
<Button name="btn1">
<Button.RenderTransform>
<TransformGroup>
<RotateTransform Angle="10" />
</TransformGroup>
</Button.RenderTransform>
</Button>
さまざまな要素を一貫した手法で扱えるのですから、これはメディアファイルでも同じです。次のようにすると、10度傾いた状態でビデオが再生されます(そのことに意味があるかどうかは別です^_^;)
<MediaElement Source="C:\Media\Somevideo.wmv">
<MediaElement.RenderTransform>
<TransformGroup>
<RotateTransform Angle="10" />
</TransformGroup>
</MediaElement.RenderTransform>
</MediaElement>
また、一般的な Web アプリケーション開発では、(Scott Guthrie のデモのように html コードを編集するケースもあるでしょうが)html を意識しなくても Web フォームデザイナのようなビジュアルな設計ツールを使うでしょう。残念ながら、WPF 開発においては、XAML を意識せずに使える WPF デザイナを提供しておりません(次期 Visual Studio "Orcas" のテクニカルプレビューとして Cider というコードネームで開発されている機能があるのみです)。このため、現時点では何かしら XAML ベースの設計が必要になります。開発ツール側の正式対応が遅いのは恐縮ですし、私も残念ですが、XAML も書いてみるとなかなか面白いですよ^_^;
なお、参加者の方から「WPF における MDI のサポート」についてご質問がありました。「Windows Presentation Foundation ガイドツアー」に記載されているとおり、WPF では MDI はサポートされていません。この理由について、WPF に携わる Lauren Lavoie がブログで「Why Doesn’t WPF Support MDI?」というエントリを書いていたので、ご紹介します。
要するに「今の WPF はバージョン1ですから」(←ものすごい意訳)ということですね。途中の "Chocolate or vanilla" といって「MDI といっても、いろんな MDI があるから」というのは、ちょっと逃げている感じがしないでもありません^_^; なお、このエントリでは、Windows フォームとの相互運用を使う実装例などが紹介されています(すみませんが、やや古いエントリであり、現行バージョンで動作するかどうかは未確認です)。