需要实现UI设置系统 - 从/向持久存储加载/保存UI元素的某些特性(可以由用户在运行时修改)。例如:
在控件加载/初始化/ etc之后,很容易从设置存储设置控件属性,但是如何捕获控件卸载之前的时刻(当它们仍然保留在可视树中时)以便检索它们的设置以进行保存?
我打算创建单例--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?
答案 0 :(得分:1)
我会使用Window的 Closing 事件。
public class MyWindow : Window
{
public MyWindow()
{
this.Closing += new System.ComponentModel.CancelEventHandler(MyWindow_Closing);
}
void MyWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
// Save what I want to here
}
}
这将是最安全的赌注,因为在某些时候你总会关闭窗口。
但是,可能有其他选择,包括用户控件的Unloaded事件。