trapemiyaの日記

hatenablogが新しくなったんで新規一転また2019年1月からちょこちょこ書いてます。C#中心のプログラミングに関するお話です。

SketchFlowでメッセージやダイアログを表示するには?

Blend 3のSketchFlowは、ユーザーと画面構成の打ち合わせをする際に大変重宝します。ボタンを押すことによって画面遷移もサポートされています。しかし残念ながらメッセージやダイアログを表示することは標準ではサポートされていないのです。しかし、これを実現する方法があります。メッセージボックスが表示されていない状態の画面と、メッセージボックスが表示された状態の画面を切り替えれば良いのです。この状態の記憶はViewStateで実現できます。ざっとした手順を書きますと、

1.表示させたいメッセージボックス(またはダイアログ)をコンポーネント化する。
2.そのコンポーネントを表示させたい画面に追加する。
3.コンポーネントが表示された状態と表示されていない状態を、それぞれViewStateに記憶する。
4.クリックするとメッセージボックスを表示するボタンに、ActiveStateActionとして、コンポーネントが表示された状態のViewStateを割り当てる。
5.メッセージボックスを閉じるために、コンポーネントにActiveStateActionを追加する。このActiveStateActionが実行されるきっかけはコンポーネントのMouseDownイベントとし、コンポーネントが表示されていないViewStateを割り当てる。

コンポーネントの表示と非表示を切り替える際にOpacityを使ってアニメーションを行うと、フェードイン、フェードアウトができます。気を付けなければならないのは、非表示の状態ではコンポーネントのVisibilityをHiddenにしておくことです。そうしなければコンポーネントの下にあるコントロールが操作できません。