c# - 在 WPF 应用程序中创 build 置 View

标签 c# wpf settings

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

我有一个 ExportSettings.settings 文件,其中包含一堆设置( bool 值、字符串、整数等),我想为它们创建一个 View 。为此,我创建了一个简单的窗口,在其中放置了标准按钮,如 OKCancelClose 并将它们链接起来到 KeyDown 事件,让用户使用 Enter/Escape 接受/取消。

我已经在 XAML 中为我的设置创建了所需的 CheckboxTextBox 等。当 ExportSettingsView 类启动时,我在其构造函数中读取我的设置并为每个控件分配值。以前我是直接绑定(bind)的,但是不能取消修改,所以放弃了。当用户单击 OK 按钮时,我再次为每个设置分配代码隐藏每个值。如果他单击Cancel,则不会完成任何分配,窗口只会关闭。

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

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

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

最佳答案

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

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

在这种情况下:

  • 窗口就是你的 View
  • 新类是您的 ViewModel
  • 设置文件就是你的模型

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

最重要的一点是您不要直接绑定(bind)到您的属性设置。

如果您想要为 View 自动生成字段,则必须使用属性网格,但使用 MVVM,您的 View 与模型分离,因此从文本框等更改为属性网格将很容易。

当你搜索 MVVM 时,不要被使用大量术语的人所迷惑,MVVM 是一个非常简单的概念,它归结为三个类,你的 View (xaml)、 View 模型( View 绑定(bind)到的内容) ) 和模型(您的数据),仅此而已!祝你好运

关于c# - 在 WPF 应用程序中创 build 置 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25473460/

相关文章:

c# - 如何在插入语句中使用子查询

c# - Azure 函数服务总线触发器从函数级别设置自动完成

c# - 命名空间 "ViewModelLocator"中不存在名称 "clr-namespace:ComEX.ViewModel"

ios - 多值设置未使用默认值初始化

c# - 在运行时转换为多个(未知类型)

c# - XML 中的非法字符

c# - 创建、刷新 WPF TreeView 并记住没有 XAML 的扩展节点

wpf - 在 Expression Blend 中重用设计数据?

php - 通过数组定义类选项是一种不好的做法吗?

linux - 安装并获取当前的 dfs.name.dir 和 dfs.data.dir 值