首先,感谢您抽出时间阅读这篇文章。
让我直接回答我的问题。
如果WPF页面在关闭前关闭,是否有任何方法可以捕获?某种PreviewClosing事件?我注意到有一个Unloaded事件,但我需要在页面关闭之前触发一些东西。
我的应用程序有窗口。 窗口的主体包含框架,然后该框架用于导航到页面。
WPF窗口XAML
<Grid>
<Frame x:Name="_mainFrame" />
</Grid>
C#将我的窗口框架导航到名为SpecEditor的页面
_mainFrame.Navigate(new SpecEditor(customerDetails));
当托管窗口试图关闭时,我需要一些方法来触发 SpecEditor页面中的事件(即预览关闭事件),以便我可以执行各种检查。主要是提示用户保存任何未保存的工作。
任何想法如何解决这个问题,因为该页面似乎没有任何PreviewClosing或PreviewUnloaded事件。
再次感谢您的时间。
** * * 编辑 * ** < EM> * **
好的,我已经设法找出了我需要的东西。
在主窗口中,我指定了PreviewClosing事件:
private void RadWindow_PreviewClosed(object sender, WindowPreviewClosedEventArgs e)
{
}
要访问主窗口中的“框架”,您可以使用以下内容(注意我将框架命名为_mainFrame):
this._mainFrame.Content
在我的情况下,框架中托管的页面被命名为“SpecEditor”,其中包含一个对接控件。因此,要访问我的页面内容,我可以执行以下操作:
((SpecEditor)this._mainFrame.Content).radDocking
它将我的框架(页面)的内容转换为我的自定义页面类(SpecEditor),这允许我访问它的内容,例如我的Docking控件。
为了获得良好的编码,有必要检查帧内容实际上是您尝试投射到的页面。你可以这样做:
if (this._mainFrame.Content is SpecEditor)
{
((SpecEditor)this._mainFrame.Content).radDocking
.... etc etc
}
我希望这会有所帮助。
答案 0 :(得分:0)
如果你真的使用框架,这篇文章显示了另一种方法: https://highfieldtales.wordpress.com/2013/07/27/how-to-prevent-the-navigation-off-a-page-in-wpf/
作者使用框架导航设施的事件。