画面に複数アイテムをカスタマイズして出すなら、ユーザーコントロールを作ろう!

#wpdev_jp #win8dev_jp

さて、ユーザーコントロールを作ってみましょう。簡単です。今回はポラロイド写真カスタムコントロールです。

まずはホストとなるプロジェクトを作成。

 

プロジェクト>新しい項目を追加>ユーザーコントロールをえらんで、Polaroid と名付けましょう。MyUserControl1 はやめましょうね。ちなみにポラロイドの語源は偏光板(ポラライザー)とセルロイドの合成語らしいです。で、途中で気が付いたのですが全然ポラロイドではありませんでした。ごめんなさい

さぁできました。ユーザーコントロールの画面サイズは仮のものです配置してユーザーが変えられるにするかどうかも開発者次第です。画面設計も画面サイズが可変になることを想定して Grid でうまく作りましょう。

image

まずは影用のRectangle を配置します。

image

Margin の 左と上を30に設定して、HolizontalAlignment / VerticalAlignment を Stretch に、Width と Height は自動に設定 ボタンを押します。

image image

ブラシのFillは黒にして、Strokeはなし、Opacity は 30%位にしておきましょう。

image image

今度はImageを貼りつけます。

Margin の 右と下を30に設定して、HolizontalAlignment / VerticalAlignment を Stretch に、Width と Height は自動に設定 ボタンを押します。Margin の設定位置以外はRectangle と一緒です。

image image

では、プロパティを作りましょう。 まずは画像を設定する ImageSource 型の ImgSource を作りましょう。

Ctrl-S でいったんXAML側を保存して、F7でコード画面に移ります。

クラスの下に場所を作って、ここで、 propdp と打ちます。

image

それから Tab x2 を打ちます。依存プロパティができました。簡単!

image

Int を ImagaSource に変えてやるとほかのところもすべて自動で変わります。すごい!

image

MyProperty を imgSource に変更しましょう。こちらも関連個所が自動で変わります。

image

最後に、最終行の ownerclass を今回のユーザーコントロールの親クラスである、Polaroid に変更します。OK!

image

 

Ctrl-Shift-B でいったんコンパイルして画面デザインに移ります。配置したImageコントロールを選択して、

image 

バインドの種類は ElementName, 要素名は UserControl を選択します。カスタムにチェックを入れて、パスの欄にs先ほどの imgSourced を直接入力します。

image

imgSource に何も入っていないので変わりませんが、これでできたはず。Ctrl-Shift-Bでコンパイルして、MainPage.xamlに移動します。

ほら、ツールボックスのコントロールに Polaroid があるのでドラッグ&ドロップして配置します。さて、表示する画像を何でもいいので(jpg/png)プロジェクトに配置してください。追加したら Polaroid コントロールを選択して、imgSourceプロパティから画像を設定します。

image

あ、画像がいっぱいに表示されてないですね。UserControl の画面に行ってImage のStretch を UniformToFill にしておきましょう。

image

あとは、画面の背景が黒で影が見づらいので白にします。デバイスタブでテーマをライトに変えましょう。

image

うん。いい感じですね。

image

1個だけ使うなら、ユーザーコントロールはいりません。やっぱり複数使わないとね。

image

簡単でしょ?

コードは書いたけど、Propdp くらい? 一番長く打ったのは ImageSource のクラス名かも。タイプ数なら30文字に満たない。

やっぱり Visual Studio 2012 はすごいです。