WP7のパノラマコントロールで任意のアイテムをプログラムから選択する
パノラマの表示アイテムをコードから操りたい時、なぜか.SelectedIndexや.SelectedItemプロパティはReadOnlyで設定できず(Pivotは出来るのに...)、一番定番とされているのはPanoramaコントロールのDefaultItemプロパティを使う方法です。確かにこれなら、単純かつ安全でそれなりにうごきます。
がっ、Defaultを変更するだけにパノラマのタイトルがずれてかっこ悪い。動きもへったくれも無いそっけない動作になります。
panorama.DefaultItem = selectItem;
なので、別の方法を探るとこうなります。
相変わらずアニメーションはしてくれませんが、表示はだいぶマシに。
panorama.SetValue(Panorama.SelectedItemProperty, selectItem);
panorama.Measure(new Size());
もうちょい頑張って拡張メソッドにしてみましょう。
使うときはこんな感じ。
public static class PanoramaUtil
{
public static void SelectItem(this Panorama panorama, PanoramaItem selectItem)
{
panorama.SetValue(Panorama.SelectedItemProperty, selectItem);
panorama.Measure(new Size());
}
}
まぁ、ちょっと力技ですが、とりあえず動きます。
panorama1.SelectItem(item);
Panoramaをテンプレートのレベルまで分解していって、ViewStateをうまく操れればもっとスマートにできそうな気がするので誰かお願いします(ぇ。