GridSplitter の配置状態の保存・復元
要点は、 WPFのGridSplitterで*でサイズ指定してるときにサイズの保存と復元をする方法 - かずきのBlog にあるとおりです。
例えば、ウィンドウの画面をつぎの3つで縦に分割するとします。
- Grid *
- GridSplitter 5px
- Grid *
このとき、 2つの Grid のActualHeight をそのまま保存・復元すればよいです。
GridSplitter が分割する画面サイズの情報を保持しているわけではないので、 GridSplitter が領域を変更できる Grid 自身の ActualHeight or ActualWidth を直接操作します。
詳細
WPFのGridSplitterで*でサイズ指定してるときにサイズの保存と復元をする方法 - かずきのBlog の記事が、とてもわかりやすかったです。
それを読めば終わりなのですが、サンプルプログラムを作ったので、この記事は補足だけです。なお、コードの主要な部分は以下の2点だけです。
private void Save() { var heights = SplitGrid.RowDefinitions.Select(p => p.ActualHeight).ToArray(); settings.Default.GridRowHeightA = heights[0]; settings.Default.GridRowHeightB = heights[2]; settings.Default.Save(); } private void Restore() { var heightA = settings.Default.GridRowHeightA; var heightB = settings.Default.GridRowHeightB; SplitGrid.RowDefinitions[0].Height = new GridLength(heightA, GridUnitType.Star); SplitGrid.RowDefinitions[2].Height = new GridLength(heightB, GridUnitType.Star); }
変更点
ウィンドウの配置状態の情報をどこに保存するべきか、という問題の解決方法に Settings.settings を利用しました。
サンプルのダウンロード
「SaveGridSplitterSample」です。