如何保存WPF UI状态?

Tow*_*wer 4 .net c# wpf settings tabcontrol

我有一个TabControl和它下面我有几个元素,如TreeViewDataGrid.当我展开树并调整数据网格列的大小时,如果我然后选项卡到另一个选项卡并返回,则忘记整个UI状态.我必须重新展开树并调整列的大小.

是否有一种合理且现有的方法来保存UI状态?我们把它分成 -

  1. 临时的(在记忆中)和
  2. 永久的(在磁盘上).

akj*_*shi 8

要保存状态可以绑定相关的控制(Width,Height,IsSelected性能等),以你的绑定源的属性(在MVVM的情况下,即视图模型),这将自动保存您temprory状态; 为了永久保存,您可以序列化ViewModel并将其保存在磁盘上,并在需要时显然加载它.

像保存树视图状态,你可以拥有IsExpandedIsSelected在你的对象(视图模型)特性TreeView势必这样的-

<Style TargetType="{x:Type TreeViewItem}">
    <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
    <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
</Style>
Run Code Online (Sandbox Code Playgroud)

您还可以使用项目设置来保存应用程序的状态,请查看此SO问题 -

c# - 在WPF应用程序中保存用户设置的方法?

和本文 - 用户设置应用