我有一个使用MVVM模式的WPF查询。第一个面板是导航区域,第二个面板是标签区域。两者之间是导航按钮。如果我单击导航按钮,它将折叠导航区域。如果我再次再次单击此按钮,则两个面板都可见。
所以我想做的就是通过应用程序关闭来保持最终状态。如果用户折叠导航区域并关闭应用程序,则下次打开应用程序时,仍应关闭导航区域。我不想将此信息存储在数据库中。
我怎样才能做到这一点?
图像的样本外观:
答案 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的值。