
Lesson5 データバインドでもっとインタラクティブ!
第1回 データバインドって何?
Blendを使うと、アニメーションや動画などを使ってビジュアル的に華やかなアプリケーションを作ることができます。それと同時に、機能的にも便利なアプリケーション(言い換えれば「本当にかっこいいアプリ」)は、豪華なプレゼンテーションと裏側の数値やテキストといったデータが密接に連携して成立しているものです。そこでLesson5では、データとビジュアル効果を結びつける「データバインド」を紹介しながら、動画に字幕を表示させるアプリケーションを作成します。
(解説:赤嶺幸一)
![]() |
[プロフィール] あかみね・こういち●株式会社セカンドファクトリー 1977年沖縄県生まれ、琉球大学卒。沖縄の役所で働いていたが退庁し、2006年にセカンドファクトリーへ参加。「本当に良いものは肩肘張らずに楽しめる」を信条に、仰々しくなくカジュアルに使えるアプリとは何かを追究中。 http://www.2ndfactory.com/ |
Lesson5で作成するアプリケーション
最近はYouTubeやニコニコ動画などの動画共有サイトが人気ですが、WPFを使えば、動画の再生に合わせてコメントを表示させるアプリケーションを簡単に作ることができます。このLessonでは、時間経過に合わせて字幕を表示する動画プレイヤーを作っていきます【図1】。

【図1】このLessonで作成するアプリケーション
このアプリケーションを作るには、再生させる動画ファイルと、表示するコメントを書いたXMLファイルが必要となります。両ファイルを、この記事を読み進める前に以下からダウンロードしておいてください。
>>> サンプルファイル(約820KB)をダウンロードする
また、このアプリケーションを作るためにはBlendのほかにVisual Studioも必要になります。お手元にない場合は以下のサイトからVisual Studioをダウンロードし、インストールしておいてください(詳しくは「Lesson1第1回 WPF、Blendとは?」をご参照ください)。
Visual Studio 2005 Service Pack 1 Update for Windows Vista
http://www.microsoft.com/downloads/details.aspx?FamilyId=90E2942D-3AD1-4873-A2EE-4ACC0AACE5B6&displaylang=ja
http://www.microsoft.com/downloads/details.aspx?FamilyId=90E2942D-3AD1-4873-A2EE-4ACC0AACE5B6&displaylang=ja
「データバインド」って何?
データバインドは「情報と情報を結びつける機能」です。
情報と情報を結びつける機能といわれてもイメージがつきにくいかもしれません。データバインドを利用すると、例えば動画の再生時間をリアルタイムで表示させたり、動画に連動して字幕を表示させたりすることができる、というとイメージしやすいのではないでしょうか。
また、バインドさせるデータは必ずしもアプリケーションの内部にある必要はありません。XMLなどのデータファイルに書かれた内容を読み込んで、アプリケーション内に表示させることも可能です。
XMLデータはメモ帳などのテキストエディタでも更新することができるため、データバインドに使うデータをXML内に書いておくと、簡単に更新できるようになります。設定を変更する度に、わざわざアプリケーションを修正してビルドし直す必要がなくなります。
プロジェクトを作成する
まず最初に、新しいプロジェクトを作成し、今回作成するアプリケーションに使う動画ファイルとXMLファイルをプロジェクトに追加します。
Blendを起動して、[新しいプロジェクト]を選択し、新規のプロジェクトを作成します。続いて、ダウンロードした動画ファイルとXMLファイルを、プロジェクトで使用するファイルとして登録します。
次に、ツールバーの[プロジェクト]から[既存のアイテムの追加]をクリックします。するとファイルの指定を促されるので、使用するXMLファイルを指定してください【図2】。
![【図2】[既存のアイテムの追加]をクリックし、「comments.xml」ファイルを指定する](/attach/images/2007december/wpf/05-01/05-01-02.gif)
【図2】[既存のアイテムの追加]をクリックし、「comments.xml」ファイルを指定する
選択したファイルは[プロジェクト]パネルの[ファイル]に追加されます【図3】。同じようにして、動画ファイルも追加してください。
←【図3】追加したファイルが[プロジェクト]パネルの[ファイル]に表示される
XMLデータをデータソースとして読み込む
次に、追加したcomments.xmlをデータソースとして読み込みます。[プロジェクト]パネルにある[データ]から[+XML]ボタンをクリックしてください【図4】。
![【図4】[+XML]ボタンをクリックする](/attach/images/2007december/wpf/05-01/05-01-04.gif)
【図4】[+XML]ボタンをクリックする
| データソースとは? Blendで作るアプリケーションだけでなく、一般的にアプリケーションの多くは、実行ファイル以外のデータファイルの内容を読み込んだり、書き換えたりすることができます。このとき、アプリケーションの立場から見た外部のデータのことを「データソース」と呼びます。 Blendでは「XML」と「CLRオブジェクト」の2種類の形式の外部データを読み込むことができます。今回はそのうちXMLファイルからデータを読み込みます。 |
[+XML]をクリックするとXMLデータソースを指定するウィンドウが表示されます。[接続名]に「XMLDataSource」と書かれていることを確認したら、[XMLデータのURL]の欄の右にある[参照]をクリックし、comments.xmlを指定して[OK]ボタンをクリックします【図5】。

【図5】XMLデータソースの元ファイルを指定する
[OK]ボタンをクリックすると、[+XML]ボタンの下に[commentsDS]という項目が追加されます【図6】。この一覧は、このアプリケーションで使用するデータソースの一覧です。[commentsDS]の表示はcomments.xmlがデータソース(DS)として読み込まれたことを意味します。

【図6】comments.xmlがデータソースとして登録される
これで、XMLファイルをアプリケーション内で使用する準備が整いました。
データソースの内容をListBoxに表示させる
続いてデータソースの内容をLayoutRootグリッド上に表示させます。
まずは、ListBoxを作成し、データソースの中のある要素をListBoxの中に表示させます。[資産ライブラリ]から[ListBox]を選択し、LayoutRootグリッド内でドラッグします。するとドラッグしたところにListBoxが作成されます【図7】。

【図7】ListBoxを選択し、LayoutRootグリッド内でドラッグする
このListBoxには[CommentsList]という名前をつけます。[プロパティ]パネルの[名前]に「CommentsList」と入力してください【図8】。
![【図8】[プロパティ]パネルの[名前]にCommentsListと入力し、名前をつける](/attach/images/2007december/wpf/05-01/05-01-08.gif)
【図8】[プロパティ]パネルの[名前]にCommentsListと入力し、名前をつける
次に、CommentsListを選択した状態で、[プロパティ]パネルの[共通プロパティ]内にある[ItemsSource]欄の右端にある小さな灰色の四角形をクリックします。するといくつかの選択肢が表示されるので、その中から[データバインド]を選択します【図9】。
![【図9】[ItemsSource]の右端をクリックし[データバインド]を選択する](/attach/images/2007december/wpf/05-01/05-01-09.gif)
【図9】[ItemsSource]の右端をクリックし[データバインド]を選択する
[データバインド]を選択すると[データバインドの作成]ウィンドウが開きます【図10】。このウィンドウでは選択したオブジェクト(今回はCommentsList)と連動させるデータソースを指定します。
![【図10】[データバインドの作成]ウィンドウが表示される](/attach/images/2007december/wpf/05-01/05-01-10.gif)
【図10】[データバインドの作成]ウィンドウが表示される
[データフィールド]タブをクリックすると、左側には参照するデータソース、右側には参照データソースの要素の一覧が表示されます。左側の欄で[commentsDS]を指定し、右側の欄に表示された一覧から[comment(配列)]を指定します。
次に、ウィンドウ下部の[DataTemplateの定義]ボタンの上にある、下方向の矢印をクリックし、より詳細な設定欄を表示させます【図11】。このうち[バインドの方向]の [OneWay]にチェックをつけます。
![【図11】下方向の矢印をクリックするとより細かい設定欄が表示されるので、[バインドの方向]で[OneWay]](/attach/images/2007december/wpf/05-01/05-01-11.gif)
【図11】下方向の矢印をクリックするとより細かい設定欄が表示されるので、[バインドの方向]で[OneWay]をチェックする
[DataTemplateの定義]ボタンをクリックし、[データテンプレートの作成]ウィンドウを表示させます【図12】。
![【図12】[データテンプレートの作成]ウィンドウ](/attach/images/2007december/wpf/05-01/05-01-12.gif)
【図12】[データテンプレートの作成]ウィンドウ
[データテンプレートの作成]ウィンドウでは、指定したオブジェクト上に表示させるデータソース内の情報を指定します。今回はcommentsList上に、人の名前の一覧を表示させることにします。
[新しいデータテンプレートと表示フィールド]にチェックをつけます。チェックの下にある要素の一覧で、[comment]と[name:(String)]の2つにチェックをつけ、ほかのチェックを外してください。指定したら[OK]ボタンを押してください。
[データテンプレートの作成]ウィンドウと[データバインドの作成]ウィンドウが閉じ、LayoutRootグリッド上のcommentsListにはデータソースから読み込んだ人の名が表示されます【図13】。

【図13】commentsListにはデータソース内の人の名前が表示される
ここまで行なったら、いったんWindow1.xamlを保存し、[F5]キーを押して、このプロジェクトをテスト起動させます。テスト画面上には、CommentsListが表示されます【図14】。

【図14】CommentsListにcommentDSの内容が表示される
これで、XMLからデータを読み込み、アプリケーション上で表示することができました。
次回は、CommentsListとほかのコントロールを連携させて、XMLデータソースの情報を表示させる仕組みを作ります。
次回につづく





