かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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

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

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

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