ToggleSwitch

WindowsPhone7の実機を見た後にVisualStudioで実際の画面を作ろうとしたときに不満なのは、あるコントロールが無いことだ。

ToggleSwitch


動作的には元々あるToggleButtonやOn/Offだけを表現するのであればCheckBoxで十分のようにも思うのだが、プラットホームに標準で用意されているコントロールが無いのは許せないのである。

と思っていたらやはり皆考える事は同じであり、CodePlexで公開されているコンポーネントライブラリィでちゃんと追加されていた。
Windows Phone Toolkit - August 2011 (7.1 SDK)

このToggleSwitch、使うのは簡単でBlend4でポトペタしてViewModelのBool型のプロパティにバインドするだけなのだが、これがどういうパターンなのかポトペタの仕方によってはコンテンツが表示されず、ランタイム時も描画はされるもののタッチヤジェスチャ(エミュレータではマウスクリック)に全く反応しない場合がある。恐らくXAMLでは正しく見えてもコンテナコントロールとの関係づけが上手く行っていないのだと思われる。※


このように枠だけしか見えない場合が上手く動作しないケース。


きちんとポトペタできた場合はデザインモードであってもこのようにコンテンツ(Content)やヘッダー(Header)が正しく描画される。また、XAML上では異常なケースと正常でケースでは全く差が無い。

実行するとこのようにエミュレータならマウスでドラッグ、実機ならばタッチしてスワイプすることでこのようにスライドして描画される。

※なぜ最初のようにおかしくなるのかの原因がまだ解っていないが、陥ってしまうと一旦削除するしかないようだ。