如何保存WPF UI状态?

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

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

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

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

就像保存树视图状态一样,您可以在TreeView绑定的对象(ViewModel)中使用IsExpandedIsSelected属性 –

  

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

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

和本文 – 用户设置应用