5

我有一个TabControl,在它下面我有几个元素,比如TreeViewDataGrid。当我展开树并调整数据网格列的大小时,如果我随后切换到另一个选项卡并返回,则整个 UI 状态都会被遗忘。我必须重新展开树并调整列的大小。

是否有一种明智且现有的方法来保存 UI 状态?让我们把它分成——

  1. 临时(在内存中)和
  2. 永久(在磁盘上)。
4

1 回答 1

8

要保存状态,您可以将相关的控件(Width、、HeightIsSelected)属性绑定到绑定源的属性(即 MVVM 中的 ViewModel),这将自动保存您的临时状态;对于永久保存,您可以序列化您的 ViewModel 并将其保存在磁盘上,并在需要时显然加载它。

就像保存你的树视图状态一样,你可以在对象(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>

您还可以使用项目设置来保存应用程序的状态,看看这个 SO Question -

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

和这篇文章 -应用了用户设置

于 2012-06-23T11:32:16.563 回答