首先,感谢您抽出宝贵时间阅读这篇文章。
让我直接回答我的问题。
如果 WPF 页面在关闭之前关闭,有什么方法可以捕获它?即某种PreviewClosing 事件?我注意到有一个 Unloaded 事件,但我需要在页面关闭之前触发一些东西。
我的应用程序有一个Window。Window的主体包含一个Frame,然后该框架用于导航到Page。
WPF 窗口 XAML
<Grid>
<Frame x:Name="_mainFrame" />
</Grid>
C# 将我的窗口框架导航到名为 SpecEditor 的页面
_mainFrame.Navigate(new SpecEditor(customerDetails));
当宿主窗口试图关闭时(即 PreviewClosing 事件),我需要一些方法来触发SpecEditor 页面中的事件,以便我可以执行各种检查。主要是提示用户保存任何未保存的工作。
由于页面似乎没有任何 PreviewClosing 或 PreviewUnloaded 事件,我如何解决这个问题的任何想法。
再次感谢您的宝贵时间。
** * *编辑* ** * **
好的,我已经设法弄清楚我需要什么。
在主窗口中,我分配 PreviewClosing 事件:
private void RadWindow_PreviewClosed(object sender, WindowPreviewClosedEventArgs e)
{
}
要访问主窗口中的“框架”,您可以使用以下命令(注意我将框架命名为 _mainFrame):
this._mainFrame.Content
就我而言,Frame 中托管的页面名为“SpecEditor”,其中包含一个停靠控件。因此,要访问我的页面内容,我可以执行以下操作:
((SpecEditor)this._mainFrame.Content).radDocking
它将我的框架(即页面)的内容转换为我的自定义页面类(SpecEditor),它允许我访问它的内容,例如我的停靠控件。
为了获得良好的编码,值得检查框架内容实际上是您尝试投射到的页面。你可以这样做:
if (this._mainFrame.Content is SpecEditor)
{
((SpecEditor)this._mainFrame.Content).radDocking
.... etc etc
}
我希望这有帮助。