【发布时间】:2010-10-11 19:16:46
【问题描述】:
需要实现UI设置系统-从/到持久存储中加载/保存UI元素的一些属性(可以由用户在运行时修改)。例如:
- DevExpress 网格控件 - 列宽、可见性、汇总区域等(此控件具有一组方法对,例如 RestoreLayoutFrom/SaveLayoutTo,但 SaveLayoutToStream(Xml) 在网格中不起作用。未加载的处理程序 - 当网格与 PresentationSource 断开连接时)
- 网格行/列,用户可以通过 GridSplitter 调整其宽度/高度
- 相当大的弹出控件
在控件加载/初始化/等之后从设置存储中设置控件属性很容易,但是如何捕捉控件卸载之前的时刻(当它们仍然保留在可视树中时)以检索它们的设置以进行保存?
简短说明
我打算创建单例 - UISettingsManager,其中有一个字典,其中包含成对的 [元素 Uid,元素设置数据]。在可视化容器(Window、UserControl)中,这个管理器可以这样使用:
public partial class PageHeader : UserControl
{
public PageHeader()
{
InitializeComponent();
UISettingsManager.RestoreSettings(myGridControl);
UISettingsManager.RestoreSettings(myPopup);
}
}
myGridControl 和 myPopup 具有唯一的 Uid(在应用程序范围内),因此 UISettingsManager 可以从内部字典中检索它们的设置并将其应用于控件;当然 UISettingsManager 知道如何使用一些不同类型的控件。
但是在存储控件设置的正确时机时,哪个容器是 Window 或 UserControl?
【问题讨论】:
标签: wpf wpf-controls frameworkelement