在WPF应用程序中创建“设置”视图

时间:2014-08-24 15:50:33

标签: c# wpf settings

许多人必须多次解决这个问题,但经过几个小时的研究后,我仍然无法找到我想要的东西。

我所拥有的是ExportSettings.settings文件,其中包含一系列设置(bool,字符串,整数等),我想为它们创建一个View。为了做到这一点,我创建了一个简单的窗口,我在其中放置了OKCancelClose标准按钮,并将它们链接到{{1允许用户使用Enter / Escape接受/取消的事件。

我已在XAML中为我的设置创建了所需的KeyDownCheckbox等。当ExportSettingsView类启动时,在其构造函数中,我读取了我的设置并为每个控件分配值。在过去我直接绑定它们但是无法取消更改,所以我放弃了它。当用户点击TextBox按钮时,我再次为每个设置分配代码隐藏每个值。如果他点击OK没有完成任务,窗口就会关闭。

对于我的设置,我想要像EditableObject这样的东西,以避免这种丑陋的方式来制作我的SettingsView。

我正在寻找的一些事情是:

  • 能够在我的设置中添加一些注释会很好(工具提示)
  • 使用反射自动生成控件?
  • 避免创建自定义设置类(以及每次应用程序启动/关闭时保存和读取的工作)

3 个答案:

答案 0 :(得分:3)

将问题分解为部分以使用MVVM,创建窗口并将其绑定到另一个类(ViewModel),此类将具有反映设置文件中数据的属性。这个类还必须实现INotifyPropertyChanged。如果你愿意,它也可以实现EditableObject,但坦率地说它不需要。

将你的按钮挂到VeiwModel上的命令,这样当用户点击保存时,它会将其属性写入设置文件。

在这种情况下:

  • 窗口是您的视图
  • 新类是您的ViewModel
  • 设置文件是您的模型

这将允许您取消更改,只是在用户点击取消时不写入您的设置文件。

最重要的一点是你不能直接绑定到你的属性设置。

如果你想为视图自动生成字段,你必须使用属性网格,但是使用MVVM,你的视图与你的模型分离,所以从文本框等变为属性网格很容易。

当你搜索MVVM时,不要被使用大量术语的人所迷惑,MVVM是一个非常简单的概念,它归结为三个类,你的View(xaml),View Model(视图绑定到的是什么) )和模型(你的数据),就是这样!祝你好运

答案 1 :(得分:-1)

我认为你需要这样的东西http://wpfdataform.codeplex.com/ 如果您使用ReSharper,您可以轻松为您的设置生成包装类

答案 2 :(得分:-2)

.NET已经支持用于保存应用程序和用户变量的非常好的工具。 http://msdn.microsoft.com/en-us/library/aa730869(v=vs.80).aspx 它必须明确保存,以便它可能非常适合您。您可以检查变量的类型并创建合适的控件。