需要实现 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?