2011-08-31 78 views

回答

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 
    }  

與此唯一的問題是,你不能停止從應用退出。

希望它有幫助。

+0

你可以把你的代碼放在主窗口的閉合/閉合事件中,然後......效果將是相同的,代碼簡化。通過詢問'關閉瀏覽器之前'是什麼意思?來自wpf的Web瀏覽器或瀏覽器控件位於另一個窗口中?對不起,但是當我回答時 - 我以爲你在談論webbrowser CONTROL。 – 0x49D1

+0

@ 0x49D1不,它是一個'XBAP'' WPF'瀏覽器應用程序。所以沒有窗口或WebBrowser控件,只有'Pages'。所以,我想要一個類似的事件,如Window_Closing(在窗口上)的瀏覽器(如:Browser_Closing),但似乎沒有... – Willem

2

如果我理解正確你的問題,你可以:

  • 添加BrowserControl tosome窗口和處理窗口的關閉事件。
  • 或者您可以嘗試Unloaded事件的變體(此全部爲 FrameworkElement對象)。

更新
不好意思,剛回來.. 例子:

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

感謝您的回覆。第一個選項對我不起作用。第二個聽起來不錯。你可以發表一個例子嗎? – Willem

+0

沒有運氣。我在那裏添加了一個方法,但沒有任何反應。這是我的代碼:'this.Unloaded + =(s,e)=> {CloseTabs(); e.Handled = true; };' 這是正確的嗎? – Willem

+0

是的,但它取決於CloseTabs()的作用。或者,也許卸載不能解決...嘗試使用調試器並找出問題。 – 0x49D1

相關問題