2013-10-21 33 views
0

我對WPF很新,我有幾個問題從app.xaml.cs Dispatch Unhandled Exception事件重定向到一個新窗口。WPF在Application_DispatcherUnhandledException中重定向

基本上我試圖模仿有錯誤的Web應用程序的交易

  1. 錯誤被困
  2. 錯誤通過ELMAH記錄
  3. 錯誤通過ELMAH電子郵件
  4. 用戶被重定向到的方式如果日誌記錄/電子郵件成功,則顯示錯誤頁面,如果不是則不會處理錯誤

代碼I我打電話是 -

private void Application_DispatcherUnhandledException(object sender, 
          System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) 
{ 
    ..... Processing Code 

    NavigationService svc = NavigationService.GetNavigationService(this); 

    svc.Navigate(new DIEM.WindowsApps.DIEMWindows.ErrorWindow()); 
} 

我遇到的問題是,調用NavigationService.GetNavigationService(本)時,「這是空值(大概是因爲App.xaml.cs不是一個網頁,它繼承於Application) 。

有沒有辦法解決這個問題?我做的事情完全錯了嗎?!

在此先感謝。

+0

嘗試使用'GetNavigationService(主窗口)' –

+0

只是去嘗試,還是返回null。 – user1948635

+0

你是否在應用程序中使用導航? (即它是XBAP還是主窗口是「NavigationWindow」?) –

回答

0

使用您在應用程序中其他位置使用的相同導航服務。如果是AppWindow,您可以將其保存爲在App類中的屬性和訪問它:

public AppWindow() 
{ 
    ((App)Application.Current).AppWindow = this; 
} 

class App : Application 
{ 
    public AppWindow AppWindow { get; set; } 

    private void Application_DispatcherUnhandledException(object sender, 
           DispatcherUnhandledExceptionEventArgs e) 
    { 
     //..... Processing Code 

     NavigationService svc = NavigationService.GetNavigationService(AppWindow); 

     svc.Navigate(new DIEM.WindowsApps.DIEMWindows.ErrorWindow()); 
    } 

} 
+0

謝謝,我會試試看 – user1948635