C# 在WPF应用程序中创建设置视图

C# 在WPF应用程序中创建设置视图,c#,wpf,settings,C#,Wpf,Settings,这个问题肯定已经被很多人多次解决了,但是经过几个小时的研究,我仍然没有找到我想要的 我有一个ExportSettings.settings文件,其中包含一组设置(bool、string、int等),我想为它们创建一个视图。为了做到这一点,我创建了一个简单的窗口,在其中我放置了标准按钮,如OK、Cancel和Close,并将它们链接到KeyDown事件,让用户使用Enter/Escape接受/取消 我已经在XAML中为我的设置创建了所需的复选框,文本框,等等。当ExportSettingsView

这个问题肯定已经被很多人多次解决了,但是经过几个小时的研究,我仍然没有找到我想要的

我有一个
ExportSettings.settings
文件,其中包含一组设置(bool、string、int等),我想为它们创建一个视图。为了做到这一点,我创建了一个简单的窗口,在其中我放置了标准按钮,如
OK
Cancel
Close
,并将它们链接到
KeyDown
事件,让用户使用Enter/Escape接受/取消

我已经在XAML中为我的设置创建了所需的
复选框
文本框
,等等。当ExportSettingsView类启动时,我在其构造函数中读取设置并为每个控件分配值。过去我直接绑定它们,但这无法取消更改,所以我放弃了它。当用户单击
OK
按钮时,我再次为每个设置分配每个值后面的代码。如果他单击
Cancel
则不会完成任何分配,窗口将关闭

我想为我的设置使用类似EditableObject的东西,以避免用这种丑陋的方式查看设置

我正在寻找的一些东西是:

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

    • .NET已经支持非常好的工具来保存应用程序和用户变量。
      它必须显式保存,这样它可能非常适合您。您可以检查变量的类型并创建合适的控件。

      我认为您需要这样的控件
      如果使用ReSharper,您可以轻松地为设置生成包装类

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

      将按钮连接到VeiwModel上的命令,这样当用户点击save时,它会将其属性写入设置文件

      在这种情况下:

      • 窗户是你的视野
      • 新类是您的ViewModel
      • 设置文件是您的模型
      这将允许您取消更改,只是当用户单击“取消”时不要写入设置文件

      最大的一点是,您不直接绑定到属性设置

      如果您想要为视图自动生成字段,您必须使用属性网格,但是使用MVVM,您的视图与您的模型是分离的,因此从textbox等更改为propertygrid将很容易


      当您搜索MVVM时,不要被使用大量术语的人愚弄,MVVM是一个非常简单的概念,它可以归结为三个类:视图(xaml)、视图模型(视图绑定的对象)和模型(数据),就是这样!祝您好运

      这可能是一个起点:创建一个包含一组备份属性的视图模型类,根据设置的数量,该类不应超过一小时。使用属性网格如何?@pushpraj如果用户单击“取消”,属性网格中的更改是否可以恢复?默认情况下,否,控件失去焦点时,编辑将发送到绑定属性。但我认为我们可以欺骗它为我们做这件事。在我们选择相同之前,最重要的一点是外观。如果你心中有一些想要的图片,也许你也可以分享。我可以为您试一试吗?关于用户取消时不更新属性的可能性,您如何看待使用属性?此属性“仅当您调用UpdateSource方法时才更新绑定源”,因此您可以在
      OK
      上调用它,但不能在
      Cancel
      上调用它。(顺便说一句,答案很好)(事实上,经过一番研究,我找到了一种很有前途的方法……)