存储UI设置的最佳做法?

Joa*_*mer 11 c# wpf settings appsettings

我们目前正在计划一个更大的WPF LoB应用程序,我想知道其他人认为是存储大量UI设置的最佳实践,例如

  • 扩张国
  • 菜单订单
  • 调整属性
  • 等等...

我不喜欢使用提供的SettingsProvider(即App.config文件)拥有数十个存储值的想法,尽管它可以用于使用自定义SettingsProvider将其存储在嵌入式数据库中.能够使用某种数据绑定也是一个问题.有谁有同样的问题?

你做了什么来存储很多用户设置?

thi*_*mat 13

我们在这里存储首选项文件:

Environment.SpecialFolder.ApplicationData
Run Code Online (Sandbox Code Playgroud)

将其存储为xml"preferences"文件,这样如果它被破坏就不会那么难以改变.

到目前为止,这比我们的注册表工作得更好,如果有任何损坏或需要重置,它会更清晰,更容易爆炸.


dec*_*jau 10

存储UI设置的更快捷方法是使用Properties.Settings.Default系统.它可以很好用的是使用WPF绑定到值. 这里的例子.Settins会自动更新和加载.

<Window ...
    xmlns:p="clr-namespace:UserSettings.Properties"
    Height="{Binding Source={x:Static p:Settings.Default}, Path=Height, Mode=TwoWay}" 
    Width="{Binding Source={x:Static p:Settings.Default}, Path=Width, Mode=TwoWay}" 
    Left="{Binding Source={x:Static p:Settings.Default}, Path=Left, Mode=TwoWay}" 
    Top="{Binding Source={x:Static p:Settings.Default}, Path=Top, Mode=TwoWay}">

...
protected override void OnClosing(System.ComponentModel.CancelEventArgs e) 
{ 
    Settings.Default.Save(); 
    base.OnClosing(e); 
}
Run Code Online (Sandbox Code Playgroud)

问题在于,如果您的应用程序很大,它就会变得很乱.

另一种解决方案(由此处某人提出)是使用ApplicationData路径将您自己的首选项存储到XML中.在那里,您可以构建自己的设置类,并使用XML序列化程序来保留它.此方法使您可以从版本迁移到版本.虽然功能更强大,但此方法需要更多代码.


Dan*_*boo 1

似乎由于某种原因失去了人气;但注册表始终是进行此类设置的合适位置。

  • 不要介意与安全相关的问题,注册表写入经常会产生 LUA/UAC 问题,注册表很容易损坏等。微软自己现在建议不要这样做,并出于这些原因而支持使用isolatedStorage或Environment.SpecialFolder.ApplicationData。 (4认同)