繁体   English   中英

如何取消从页面关闭WPF应用程序?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM