Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Visual Studio 2008で標準搭載されたWindows Presentation Foundation

Visual Studio 2008 徹底入門 (5)

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/03/25 14:00
目次

サンプル4~XAMLのポテンシャルを垣間見る

 ここまで、Visual Studio 2008でのWPFサポート機能を用いて、いくつかのサンプルを見てきました。Windows Formsと同じ機能がWPFでもサポートされており、XAMLという新しい概念が追加されたからといって、アプリケーション実装の流れが大きく異なるわけではないことが分かったかと思います。

 しかし、XAMLならではの機能、という面では、これまでのサンプルではほとんど伝わってこなかった、というのも実感でしょう。

 次のサンプルは、Visual Studio 2008のツールボックスではサポートされていないXAMLコントロールを使い、ボタンやチェックボックスといったごく普通の2Dのコントロールを3D空間上に表示する、というものです。この3Dオブジェクトへの2Dオブジェクトの配置は、前述の通り.NET Framework 3.5の新機能で、Viewport2DVisual3Dを使って実現しています。

 また、ボタンの"中に"チェックボックスを配置するという荒技も行っています。

 このサンプルはサンプルファイルの3DUIプロジェクトに含まれています。詳細はソースコードをご覧ください。

ボタンの3D表示。ボタンの"内に"チェックボックスが存在することに注目
ボタンの3D表示。ボタンの"内に"チェックボックスが存在することに注目

 このサンプルでは、Viewport3Dコントロールを用いて3D表示を行っています。これはVisual Studio 2008で直接サポートされていないコントロールですので、詳細は省略します。

 Viewport3Dコントロール内にViewport2DVisual3Dコントロールを使ってボタンを配置し、その配下にチェックボックスを配置しています。この部分のXAMLコードを引用します。

チェックボックスを中に持つボタンのXAMLコード
<Button Width="150" Height="50" Background="Aqua" Click="Button_Click">
    <Button.Content>
        <CheckBox Name="angleCheckbox">Right/Left angle</CheckBox>
    </Button.Content>
</Button>

 コードを見ると分かるとおり、ButtonコントロールのContentプロパティにCheckBoxコントロールを定義しています。これは通常のWindows Formsではあり得ない親子関係ですが、XAMLではこうした無茶な定義を行ってもきちんと描画が行われます。

 今回はこのボタンの押下時に、チェックボックスがチェックされているかどうかに合わせて、3D表示の角度を変えるようなイベントハンドラを記述してみました。

 サンプルを実行し、チェックボックスをチェックすると、次のように表示角度が入れ替わります。

ボタン内のチェックボックスがチェックされると、3D表示の角度が変わる
ボタン内のチェックボックスがチェックされると、3D表示の角度が変わる

 このサンプルですが、実用性はともかくとして、3Dの制御やコントロールの入れ子といった、これまでのWindows Formsでは決して実現できなかった機能を、50行以下のXAMLコードと、数行のイベントハンドラだけで実装していることに注目してください。画面キャプチャでは分かりづらいので、ぜひサンプルを実行してみてください。3Dベースなのに、普通の2Dのコントロールが…、しかもボタンの中にチェックボックスが…と何とも不思議な気持ちになること請け合いです。

 近年、Webデザインの分野を中心に、人間がコンピュータと接するためのUIは、より洗練されたものへと進化していきました。そうした流れがある中で、ボタンなどの標準的なコントロールについては、ほとんどデザイン的な改良がなく、OSお仕着せのスタイルがそのまま使われてきました。

 3Dグラフィックスのサポートと、さらなるUI表現の追求を可能とするXAMLのポテンシャルは、これまでになかった種類のアプリケーションを実現する助けとなるでしょう。

 XAMLには他にもタイムラインベースのアニメーション機能など、膨大な機能が含まれています。ドキュメントを見ながら新しいコントロールをお試しください。また、Expression Blendを使ってさまざまな効果を含めたUIをオーサリングして、Visual Studio 2008に取り込んで連係してみてください。

まとめ

 Visual Studio 2008でWPFが正式サポートされることで、XAMLを使ったWPFアプリケーションの作成が行えるようになりました。

 イベントのバインドがプロパティウィンドウから行えないなど、これまでのWindows Formsとは少し異なる部分もありますが、IntelliSenseのサポートが強力なので、スムーズにイベント記述を行うことができます。

 こうした点は、Visual Studio 2005 Extensions for WPFから大きく進歩した部分と言えるでしょう。Visual Studio 2005 Extensions for WPFは、XAMLコントロールの配置・フォームデザイナ機能のみを提供し、イベントのハンドリングを行うことができませんでした。XAMLで配置したボタンをダブルクリックしても何の反応も無いというのは、RADプログラミングに慣れた身体には少々刺激が強かったものです。コードビハインド側のソースコードで直接イベントのバインドを行うことを強いられたため、統合開発環境を使っているのになぜこんな原始的な方法を…と感じたものでした。

 Visual Studio 2008では、コントロールの代表的なイベントはダブルクリックで、それ以外のイベントについてもIntelliSenseを使用することでバインドを行え、快適なコーディングが可能となったと言えるでしょう。

 Windows Vistaが出荷されて1年以上が経過しましたが、WPFを使用したアプリケーションはまだそれほど普及しているわけではありません。3.0以降の.NET Frameworkのインストールが必要であることもさることながら、Visual Studioでの正式サポートが無かったため、開発が行いづらかった、というのも一因かもしれません。

 待望のVisual Studio 2008による正式サポートは、WPFを利用したさまざまなアプリケーションが世に出るきっかけとなることでしょう。

 本記事ではWPFの機能のほんのさわりの部分までしか扱うことはできませんでしたが、WPF/XAMLに収められた機能は非常に膨大です。また、これまでソースコードを書かなければ実現できなかったようなグラフィック機能を、XAMLで記述することができるようにもなりました。前述したデザイナと開発者の共同作業が可能になったことも含め、より豊かなユーザーエクスペリエンスの実現が期待されます。

 次回は、WPFアプリケーションの本格的なデザインには欠かせないExpression BlendとVisual Studio 2008の連携について紹介します。

参考資料

 


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

修正履歴

  • 2008/03/26 12:17 次回予告を一部修正。

著者プロフィール

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

  • WINGSプロジェクト 土井 毅(ドイ ツヨシ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

バックナンバー

連載:Visual Studio 2008徹底入門

もっと読む

All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5