[英]How to cancel WPF app closing from Page?
我正在使用WPF NavigationWindow和某些页面,并且希望能够知道应用程序何时从页面关闭。
如何在没有从NavigationWindow_Closing事件处理程序主动通知页面的情况下完成此操作?
我知道这里的技术,但是不幸的是,关闭应用程序时未调用NavigationService_Navigating。
如果我理解正确,那么您的问题是如何访问NavigationWindow
内托管的内容。 知道窗口本身正在关闭很简单,例如,您可以订阅一个Closing
事件。
若要将Page
托管在NavigationWindow
,可以使用VisualTreeHelper
向下钻取其后代,直到找到唯一的WebBrowser
控件。 您可以手动进行编码,但是网上有类似这样的好代码可以使用。
获得WebBrowser
,使用WebBrowser.Document
属性获取内容非常容易。
一种方法是让涉及的页面支持界面,例如:
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.