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

WPF: How to save only one Settings variable?

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

您的问题暗示存在设计问题:

用户期望设置的清晰抽象:

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

如果您需要 "edit some values but do not save as settings" 之类的东西,那么您应该引入一个额外的层来实现这一点:允许在不修改设置的情况下更改某些值。

不,无法在 Designer 生成的 Settings 对象中保存单个 属性 值。您只能保存整个对象或 none。

请注意,设置保存在 XML 文件中,无论如何,这会使只写出单个值变得不切实际。另请注意,写入此 XML 文件相对便宜;它通常是一个很小的文件(除非您在 Settings 对象中序列化一些巨大的数据),并且可以一遍又一遍地写入,对程序的性能几乎没有影响(特别是如果您只将其写入对用户操作的响应……与计算机相比,用户非常慢。

一般来说,您应该而不是推迟写入Settings对象,直到程序退出。每当修改任何设置(或一组设置)时调用 Settings.Default.Save() 是非常合适的,以确保无论程序稍后发生什么(例如它崩溃),设置实际上都保存到磁盘上。


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

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