5

があり、TabControlその下に や などの要素がいくつかTreeViewありDataGridます。ツリーを展開してデータ グリッドの列のサイズを変更した後、タブで別のタブに移動して戻ってくると、UI の状態全体が忘れられてしまいます。ツリーを再展開し、列のサイズを変更する必要があります。

UI の状態を保存する賢明で既存の方法はありますか? これを次のように分けてみましょう -

  1. 一時的 (メモリ内) および
  2. 永続的 (ディスク上)。
4

1 に答える 1

8

状態を保存するには、関連するコントロール ( Width、など) のプロパティをバインディング ソースのプロパティ (つまり、MVVM の場合は ViewModel) にバインドできます。これにより、一時的な状態が自動的に保存されます。永続的に保存するには、ViewModel をシリアル化してディスクに保存し、必要に応じてロードすることができます。HeightIsSelected

あなたが持つことができるツリービューの状態と、あなたがこのようにバインドされているオブジェクト(ViewModel)のプロパティを保存するIsExpandedためIsSelectedTreeViewように-

<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 アプリケーションでユーザー設定を保存する方法は?

およびこの記事 -ユーザー設定の適用

于 2012-06-23T11:32:16.563 に答える