【发布时间】:2014-04-05 02:50:20
【问题描述】:
我最近在 XAML 中处理我的配置设置的大量绑定。存储列宽/控件大小/窗口位置等。所以我想知道是否有一种简单的方法可以创建并将“设置/配置”值绑定到 XAML?
现在我只是在项目中创建一个设置,将一个可绑定属性推入 XAML 的 DataContext 并从那里开始。但是我的设置计数变得非常疯狂,管理它们变得越来越痛苦(无聊、重复和烦人)。
在一个理想的世界里,我想要一个可以做这样的事情的系统:
<Window State={Binding {Settings Name="MyWindowState", DefaultValue="Normal"}}/>
如果“MyWindowState”设置不存在,它将自动创建并存储在某处。如果 MyWindowState 设置发生变化,所有使用它的绑定也会得到通知并相应地更新。如果设置检索失败,将使用 DefaultValue。
是否已经存在类似的东西,或者可以使用标准 WPF XAML 实现吗?
我正计划开发一些可以做到这一点的东西,但如果已经存在经过验证的解决方案,我希望至少看看/听到它。
据我了解,Telerik's persistance framework 可以做这样的事情,除了在控制到控制的基础上(没有我可以绑定的全局“设置”),至少乍一看。
【问题讨论】:
-
您可能会发现这很有用:thomaslevesque.com/2008/11/18/…
-
@PeterRitchie 那是那里的 1/3,但我想避免手动去在项目本身中创建一个设置(这样我可以在其他项目中重用我的控件无需担心缺少设置),同时更新所有命中配置属性的绑定(如果它发生更改)。
-
据我了解,您有一个设置文件,该文件存储与您的窗口 xaml 文件相同的信息。在 xaml 中,您还可以设置宽度、位置、内容..等等,所以问题是为什么要复制 xaml?为什么不在启动时将 xaml 的构建操作更改为内容并在运行时加载 xaml 文件,或者在应用程序关闭事件时将当前窗口元素状态保存回 xaml? xaml 只不过是 xml,只是带有允许自定义标签的自定义解析
-
@devhedgehog 我没有在 XAML 文件中存储任何内容,目前我正在使用 .NET 内置项目设置来存储数据。哪个有效,但就像我说的那样,处理大量设置变得非常烦人。
-
什么意思你不在 xaml 文件中存储任何东西?当然,你做了你的窗口,所有元素都在 xaml 文件中,否则你不会在 wpf 中:) 我说不是让 .net 在 baml 中编译你的 xaml,你可以选择保持原始 xaml 并在运行时加载它将允许您操作您的 xaml 文件 :) 这种方法将导致您的设置文件在 xaml 中全部消失 :)