かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Windows ストア アプリのGridViewのスクロールバーの位置の復元したいよね?

ストアアプリが画面の背後にまわってしまって、中断から終了されてしまったあとに、再度起動されたときに前回終了する前の状態を復元するというのが一般的です。その中で若干厄介なのがGridViewのスクロールバーの位置の復元です。

今回はコードレシピにPrism for Windows Runtimeのプロジェクトテンプレートをベースにスクロールバーの位置の復元サンプルを書いてみました。ポイントはスクロールバーの位置の永続化と、永続化したスクロールバーの位置の読み込み自体はSaveStateとLoadStateメソッドで行うが、実際にスクロールバーの位置を設定するのはページのLoadedイベントで行っている点です。こうすることで、VisualTreeが構築された後のタイミングでスクロールバーの位置を設定しています。(LoadStateメソッド内だと、まだVisualTreeの構築は終わってない感じ)

Prism for WinRTでGridViewのスクロール位置を記録する