我正在使用WPF NavigationWindow和一些页面,希望能够知道应用程序何时从一个页面关闭。
如果没有主动通知NavigationWindow_Closing事件处理程序中的页面,怎么办呢?
我知道技术here,但遗憾的是,当应用程序关闭时,不会调用NavigationService_Navigating。
答案 0 :(得分:2)
如果我理解正确,您的问题是如何访问NavigationWindow
内托管的内容。知道窗口本身正在关闭是微不足道的,例如您可以订阅Closing
个活动。
要获得Page
中托管的NavigationWindow
,您可以使用VisualTreeHelper
向下钻取其后代,直到找到唯一的WebBrowser
控件。您可以手动对此进行编码,但可以在网上使用good code like this。
获得WebBrowser
后,使用WebBrowser.Document
属性轻松获取内容。
答案 1 :(得分:1)
执行此操作的一种方法是让所涉及的页面支持以下界面:
public interface ICanClose
{
bool CanClose();
}
在页面级别实现此界面:
public partial class Page1 : Page, ICanClose
{
public Page1()
{
InitializeComponent();
}
public bool CanClose()
{
return false;
}
}
在导航窗口中,检查孩子是否属于ICanClose:
private void NavigationWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
ICanClose canClose = this.Content as ICanClose;
if (canClose != null && !canClose.CanClose())
e.Cancel = true;
}