があり、TabControl
その下に や などの要素がいくつかTreeView
ありDataGrid
ます。ツリーを展開してデータ グリッドの列のサイズを変更した後、タブで別のタブに移動して戻ってくると、UI の状態全体が忘れられてしまいます。ツリーを再展開し、列のサイズを変更する必要があります。
UI の状態を保存する賢明で既存の方法はありますか? これを次のように分けてみましょう -
- 一時的 (メモリ内) および
- 永続的 (ディスク上)。
があり、TabControl
その下に や などの要素がいくつかTreeView
ありDataGrid
ます。ツリーを展開してデータ グリッドの列のサイズを変更した後、タブで別のタブに移動して戻ってくると、UI の状態全体が忘れられてしまいます。ツリーを再展開し、列のサイズを変更する必要があります。
UI の状態を保存する賢明で既存の方法はありますか? これを次のように分けてみましょう -
状態を保存するには、関連するコントロール ( Width
、など) のプロパティをバインディング ソースのプロパティ (つまり、MVVM の場合は ViewModel) にバインドできます。これにより、一時的な状態が自動的に保存されます。永続的に保存するには、ViewModel をシリアル化してディスクに保存し、必要に応じてロードすることができます。Height
IsSelected
あなたが持つことができるツリービューの状態と、あなたがこのようにバインドされているオブジェクト(ViewModel)のプロパティを保存するIsExpanded
ためIsSelected
のTreeView
ように-
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
</Style>
アプリケーションの状態を保存するためにプロジェクト設定を使用することもできます。この SO の質問を見てください -
c# - WPF アプリケーションでユーザー設定を保存する方法は?
およびこの記事 -ユーザー設定の適用