最近在处理一个功能:在page页面加载时导入已有配置,在page页面被关闭时也要相应更新修改过的配置。
初步解决方案,当然是响应此page的loaded事件和unloaded事件,如下:
private void Page_Loaded(object sender, RoutedEventArgs e)
{
string strXmlFile = Environment.CurrentDirectory + "\\Config.xml";
GetConfig(strXmlFile);
}
private void Page_Unloaded(object sender, RoutedEventArgs e)
{
string strXmlFile = Environment.CurrentDirectory + "\\Config.xml";
if (!File.Exists(strXmlFile))
{
SetConfig(strXmlFile);
return;
}
else
{
UpdateConfig(strXmlFile);
}
}运行时发现怎么都进不了unloaded事件。
百度时(https://zhidao.baidu.com/question/411457420.html)才知道:Window在Closing的时候,是不会去触发它的子元素的Unloaded 事件。
好吧,那只好写个扩展,在Dispatcher.StartedShutdown处理。代码如下:
protected override void OnInitialized(EventArgs e)
{
base.OnInitialized(e);
Dispatcher.ShutdownStarted += OnDispatcherShutdownStarted;
}
private void OnDispatcherShutdownStarted(object sender, EventArgs e)
{
string strXmlFile = Environment.CurrentDirectory + "\\Config.xml";
if (!File.Exists(strXmlFile))
{
SetConfig(strXmlFile);
return;
}
else
{
UpdateConfig(strXmlFile);
}
}调试,在关闭窗口时,能进入Dispatcher.StartedShutdown的响应函数。
本文介绍了一种在WPF应用程序中实现页面加载时读取配置,并在页面关闭时更新配置的方法。通过监听页面的Loaded事件加载配置文件,并利用Dispatcher.ShutdownStarted事件确保在窗口关闭时能够更新配置。
1万+





