这个问题肯定已经被很多人解决过很多次了,但是经过几个小时的研究,我仍然没有找到我想要的。
我有一个ExportSettings.settings
文件与一堆设置(bool,字符串,int等),我想为他们创建一个视图。为了做到这一点,我创建了一个简单的窗口,在其中我放置了标准按钮作为OK
, Cancel
和Close
,并将它们链接到KeyDown
事件,让用户使用Enter/Escape接受/取消。
我已经在XAML中创建了所需的Checkbox
, TextBox
等,用于我的设置。当ExportSettingsView类启动时,我在其构造函数中读取设置并为每个控件赋值。过去我是直接绑定的,但是不能取消更改,所以我放弃了。当用户单击OK
按钮时,我再次为每个设置分配每个值背后的代码。如果他点击Cancel
,则没有分配完成,窗口关闭。
我希望我的设置类似EditableObject,以避免这种难看的方式,使我的SettingsView。
我正在寻找的一些东西是:
- 能够在我的设置中放置一些评论会很好(工具提示)
- 使用反射自动生成控件?
- 避免创建自定义设置类(以及每次应用程序启动/关闭时保存和读取的工作)
将您的问题分解为使用MVVM的部分,创建您的窗口并将其绑定到另一个类(ViewModel),该类将具有反映设置文件中的数据的属性。这个类还必须实现INotifyPropertyChanged。如果你想的话,它也可以实现EditableObject,但坦率地说,它不是必需的。
将您的按钮与您的VeiwModel上的命令挂钩,以便当用户点击保存时,它将其属性写入设置文件。
在本例中:
- Window is your View
- 新类是你的ViewModel
- 设置文件是你的模型
这将允许你取消更改,只是不要在用户点击取消时写入你的设置文件。
最重要的一点是你不能直接绑定到你的属性设置。
如果你想为视图自动生成字段,你必须使用属性网格,但是有了MVVM,你的视图与你的模型是分离的,所以从文本框之类的东西改变到propertygrid会很容易。
当你搜索MVVM时,不要被人们使用的许多术语所迷惑,MVVM是一个非常简单的概念,它归结为三个类,你的视图(xaml),视图模型(视图绑定的东西)和模型(你的数据),这就是它!祝你好运
我想你需要这样的东西http://wpfdataform.codeplex.com/如果你使用ReSharper,你可以很容易地为你的设置生成包装类
。NET已经支持非常好的工具来保存应用程序和用户变量。http://msdn.microsoft.com/en-us/library/aa730869 (v = vs.80) . aspx它必须显式保存,因此它可能非常适合您。您可以检查变量的类型并创建合适的控件。