我有一个TabControl
,在它下面我有几个元素,比如TreeView
和DataGrid
。当我展开树并调整数据网格列的大小时,如果我随后切换到另一个选项卡并返回,则整个 UI 状态都会被遗忘。我必须重新展开树并调整列的大小。
是否有一种明智且现有的方法来保存 UI 状态?让我们把它分成——
- 临时(在内存中)和
- 永久(在磁盘上)。
我有一个TabControl
,在它下面我有几个元素,比如TreeView
和DataGrid
。当我展开树并调整数据网格列的大小时,如果我随后切换到另一个选项卡并返回,则整个 UI 状态都会被遗忘。我必须重新展开树并调整列的大小。
是否有一种明智且现有的方法来保存 UI 状态?让我们把它分成——
要保存状态,您可以将相关的控件(Width
、、Height
等IsSelected
)属性绑定到绑定源的属性(即 MVVM 中的 ViewModel),这将自动保存您的临时状态;对于永久保存,您可以序列化您的 ViewModel 并将其保存在磁盘上,并在需要时显然加载它。
就像保存你的树视图状态一样,你可以在对象(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 Question -
和这篇文章 -应用了用户设置