记住可扩展/可折叠导航区域的最后设置

时间:2014-03-13 06:51:37

标签: c# wpf mvvm

我有一个使用MVVM模式的WPF查询。第一个面板是导航区域,第二个面板是标签区域。两者之间是导航按钮。如果我单击导航按钮,它将折叠导航区域。如果我再次再次单击此按钮,则两个面板都可见。

所以我想做的就是通过应用程序关闭来保持最终状态。如果用户折叠导航区域并关闭应用程序,则下次打开应用程序时,仍应关闭导航区域。我不想将此信息存储在数据库中。

我怎样才能做到这一点?

图像的样本外观: enter image description here

2 个答案:

答案 0 :(得分:1)

如果您使用的是MVVM,那么该视图的ViewModel将会使用。

在该ViewModel中,您应该有一个命令,当用户单击“导航”按钮时将执行该命令,以便您可以决定如何处理导航区

所以基本上你可以在Application.Properties.Settings中存储那些信息(导航是否已折叠),参见http://msdn.microsoft.com/en-us/library/aa730869%28v=vs.80%29.aspx

你创建了属性,例如IsNavigationAreaCollapsed类型为boolean。

当在代码中执行命令时,执行以下操作:

    private void OnNavigationButtonExecution()
    {
        Properties.Settings.Default.IsNavigationAreaCollapsed = !Properties.Settings.Default.IsNavigationAreaCollapsed
        CollapseNavigationArea(Properties.Settings.Default.IsNavigationAreaCollapsed); // this will collapse or not the navoigation area
        Properties.Settings.Default.Save(); //save settings, so that it will be stored when app shutsdown
    }

并在ViewModel构造函数中添加将从设置中读取值的代码(Properties.Settings.Default.IsNavigationAreaCollapsed)并执行此操作

    CollapseNavigationArea(Properties.Settings.Default.IsNavigationAreaCollapsed); 

答案 1 :(得分:0)

我找到了一种简单的方法来实现它。 我做的是创建一个XML文件(显然在Bin文件夹之外) 将网格宽度的默认值传递给XML文件。

在应用程序启动时调用的函数我在Linq To XML的帮助下检索了我在XML文件中设置默认值(我第一次传递默认值)的Grid Width值,并将此条目存储到变量。

现在,我将这个变量传递给Grid长度。 现在,如果用户折叠/展开面板并关闭应用程序,那么只需在Close函数上,我就会更新XML的值。