上村 陽介(うえむら ようすけ)
株式会社 ディー・ディー・エフ
取締役兼Webグループ統括
上村 陽介 Webプロモーションを得意とし,インタラクティブコンテンツ制作を主軸にDrupal(オープンソースCMS)によるWebアプリ構築,最近は不動産事業など展開。

 今回の挑戦は「プログレスバー」です。JavaScriptベースのSilverlight1では,いろんな方々がサンプルを作っていたり,サンプルが公開されているサイトを参考にできたり,なんとかなったものでした。しかしながらSilverlight2になったとたん,情報が少なすぎるっ! ググれどもググれども・・・,な毎日でしたが,やっと光明が!

 ふむふむ,最初のSilverlight2独特のローディングアニメ(いわゆるスプラッシュ画面)はC#ではなくJavaScriptでコントロールするのですねっ。つまりSilverlight1と同じってことらしい。メインのXAML以外にローディング用のXAMLを用意しておいて,JavaScriptでローディングを監視。そしてローディングが終了したらローディング用XAMLを見えなくしておいて,メイン画面のXAMLを表示。という流れらしい。

 となれば,Silverlight1でのローディングは習得済みなので,早速サンプルを作ってみようではありませんか(図1)。

図1●サンプルの動作手続きの流れ
図1●サンプルの動作手続きの流れ
[画像のクリックで拡大表示]

 Blend2から新しいプロジェクト「loaderTest」を作成。バナーの時と同じようにイメージデータをプロジェクトパネルから「既存のアイテムを追加」を選択して読み込みます。

 今回はローディング状況を把握したいので,大きめサイズのjpg画像(large_size_img.jpg サイズ:780K)を用意。その画像をPage.xamlに配置したら,ローディング専用のXAMLを作ります。イメージデータを取り込む時と同じ右クリックで,今度は「新しいアイテムの追加」を選びます(図2)。すると「新しいアイテム」ウィンドウが表示されるので,名前をloader.xamlとしてOKをクリックします(図3)。

図2●新しいアイテムの追加を選択
図2●新しいアイテムの追加を選択
[画像のクリックで拡大表示]
図3●新しいアイテムのダイアログで名前をloader.xamlに
図3●新しいアイテムのダイアログで名前をloader.xamlに
[画像のクリックで拡大表示]

 「loaderTest」プロジェクトのフォルダを開いて,先ほど作成したloader.xamlをデスクトップなど,適当な場所にフォルダを作ってコピーします。

 さらにBlend2に戻ってloader.xamlを消去してから,1回ビルドして,実行ファイル(Default.htmlとloaderTest.xap)をコピー。

 なぜ,こんなややこしい方法にしたかというと。XAMLのテンプレートが欲しかっただけです・・・。loader.xamlはプロジェクトの中に置きっぱなしだと,ビルドしたときに一緒にXAPにパッケージングされてしまうのでプロジェクトからは消去しちゃいます。