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

C# 记住可展开/可折叠导航区域的最后设置,c#,wpf,mvvm,C#,Wpf,Mvvm,我有一个使用MVVM模式的WPF查询。第一个面板是导航区域,第二个面板是选项卡区域。两者之间是导航按钮。如果我点击导航按钮,它将折叠导航区域。如果我再次单击此按钮,则两个面板都可见 所以我想做的就是让它们的最终状态在应用程序关闭期间保持不变。如果用户折叠导航区域并关闭应用程序,则下次打开应用程序时,导航区域仍应关闭。我不想把这些信息存储在数据库中 我怎样才能做到这一点 图像的样例外观: 如果您使用的是MVVM,那么该视图就有一个ViewModel 在该ViewModel中,您应该有一个命令,当用

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

所以我想做的就是让它们的最终状态在应用程序关闭期间保持不变。如果用户折叠导航区域并关闭应用程序,则下次打开应用程序时,导航区域仍应关闭。我不想把这些信息存储在数据库中

我怎样才能做到这一点

图像的样例外观:

如果您使用的是MVVM,那么该视图就有一个ViewModel

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

因此,基本上您可以将该信息(导航是否折叠)存储在Application.Properties.Settings中,请参阅

您可以在这里创建属性,例如类型为boolean的IsNavigationeAcollapsed

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

    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.isNavigationeAcollapsed)中读取值并执行此操作

    CollapseNavigationArea(Properties.Settings.Default.IsNavigationAreaCollapsed); 

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

在应用程序启动时被调用的函数,我在Linq To XML的帮助下,检索了在XML文件中设置为默认值的网格宽度值(这是我第一次传递默认值),并将该条目存储到一个变量中

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