0

我对 WPF 很陌生,从 app.xaml.cs Dispatch Unhandled Exception 事件重定向到新窗口时遇到了一些问题。

基本上,我试图模仿 Web 应用程序处理错误的方式

  1. 错误被困
  2. 通过 Elmah 记录错误
  3. 错误通过 Elmah 通过电子邮件发送
  4. 如果日志记录/电子邮件成功,用户将被重定向到错误页面,否则将不处理错误

我打电话的代码是 -

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(this) 时,'this' 为空(可能是因为 App.xaml.cs 不是页面,它继承自 Application)。

有没有办法解决?我做的事情完全错了吗?!

提前致谢。

4

1 回答 1

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());
    }

}
于 2013-10-21T14:35:10.217 回答