如何在WPF浏览器应用程序中处理Before Close事件?

时间:2011-08-31 11:52:06

标签: c# wpf events browser xbap

我刚开始使用WPF浏览器应用程序。

我想处理浏览器的Before Close事件,那么我将如何处理该事件?

2 个答案:

答案 0 :(得分:2)

如果我理解你的问题,你可以:

  • 添加您的BrowserControl tosome窗口并处理Window的Closing事件。
  • 或者您可以尝试Unloaded事件的变体(这一切都是 FrameworkElement对象有)。

<强>更新
对不起,刚刚回来.. 示例:

yourControl.Unloaded += (s, e) =>
            {
                // some code here
                e.Handled = true;
            };

答案 1 :(得分:1)

我找到了this解决方案。

在App.xaml.cs文件中:

 private void Application_Onexit(object sender, ExitEventArgs e)

        { 

          //write your code in here!

        }

在App.xaml文件中:

<Application x:Class="(yourclasss)"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             Startup="Application_Startup"
             Exit="Application_Onexit"
             ShutdownMode="OnLastWindowClose"
             StartupUri="startup.xaml">

所以基本上需要设置ShutdownMode属性才能使其工作。

然后在app.xaml.cs中添加event

public static event EventHandler UnloadPageWorkaround;

public void Application_Onexit(object sender, ExitEventArgs e)
{
    UnloadPageWorkaround.Invoke(null, null);
}

然后在相关页面上:

    private void Page_Loaded(object sender, RoutedEventArgs e)
    {

        WPFBrowser.App.UnloadPageWorkaround += new EventHandler(DoMySpecialPageCleanupStuff);
    }

    void DoMySpecialPageCleanupStuff(object sender, EventArgs e)
    {
        //do cleanup
    }       

唯一的问题是,您无法阻止应用程序退出。

希望它有所帮助。