WPF:如何只保存一个Settings变量?

时间:2015-01-22 09:13:37

标签: c# wpf settings

有没有办法在我的设置中只保存一个默认变量?我知道有一个命令Properties.Settings.Default.Save();,但我想保存我的一个设置变量的更改,而不是全部。

2 个答案:

答案 0 :(得分:3)

不,无法在Designer生成的Settings对象中保存单个属性值。您可以只保存整个对象,也可以不保存任何对象。

请注意,这些设置会保存在XML文件中,这样无论如何都只能写出一个值不切实际的值。另请注意,编写此XML文件相对便宜;它通常是一个小文件(除非你在Settings对象中序列化一些大量数据),并且可以反复编写对程序性能的影响很小(特别是如果你只是在编写它时)响应用户操作...与计算机相比,用户非常慢。

一般情况下,应该推迟编写Settings对象,直到程序退出。在任何设置(或设置组)被修改时调用Settings.Default.Save()是非常合适的,以确保设置实际上持久保存到磁盘,而不管程序后期发生了什么(例如崩溃)。


最后请注意,根据您的具体情况 - 一个标志指示是否显示菜单,另一个标志指示是否保留此值 - 您不一定需要在其他地方添加另一个标志并有条件地保存基于第一面旗帜。

相反,只需在您的Settings对象中保留两个标记,例如Settings.Default.RememberMenuVisibleSettingsSettings.Default.MenuVisible。然后,当您的程序启动时,您可以检查RememberMenuVisibleSettings,如果它设置为false,只需将MenuVisible初始化为其默认设置,覆盖保存到设置文件中的内容。然后你的程序的其余部分不需要担心它;在该点之后不需要对任何一个标志进行特殊处理。您可以正常保存两者,并确信当程序再次启动时它会做正确的事情。

答案 1 :(得分:0)

您的问题暗示了设计问题:

用户希望通过设置明确抽象:

  • 在程序启动时加载所有设置
  • 可能在程序执行期间修改设置
  • 在程序退出前保存所有设置

如果您需要“编辑某些值但不保存为设置”之类的内容,那么您应该引入一个额外的图层来执行此操作:允许更改某些值而不修改设置。