Silverlight ChildWindow:ChildWindow.Show()上的HRESULT E_FAIL

时间:2009-12-28 09:32:22

标签: silverlight childwindow hresult

我有一些ChildWindow控件的问题,我创建了一个错误窗口控件,显示在app.xaml.cs中捕获到未处理的异常之后。问题是当我尝试显示错误窗口时,有时它工作正常,但有时我得到这个令人讨厌的例外:

消息: 错误HRESULT E_FAIL已从调用COM组件返回。

堆栈跟踪: MS.Internal.XcpImports.CheckHResult(UInt32 hr)位于System.Windows的System.Windows.DependencyObject.SetValue(DependencyProperty属性,布尔b)的MS.Internal.XcpImports.SetValue(INativeCoreTypeWrapper obj,DependencyProperty属性,布尔b)中。 Controls.Primitives.Popup.set_IsOpen(布尔值)位于FrontEnd.SL.Util.GuiLogger.ShowErrorWindow的System.Windows.Controls.ChildWindow.Show()(ErrorDetails详细信息,ErrorSeverity严重性)


您看到的跟踪位于ChildWindow的Show()方法中。
换句话说,我的代码是:
ErrorWindow errorWin = new ErrorWindow();
errorWin.Show();
其中ErrorWindow:ChildWindow

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

在我看来,使用ChildWindow控件会出现一些问题。如果现有的VisualTree因异常而处于不一致/损坏状态会发生什么?

您必须在应用程序范围内“处理”未处理的异常的最佳机会是完全替换VisualRoot持有的现有对象。

答案 1 :(得分:0)

如果在加载子窗口的内容时出现问题,也会发生这种情况。在我的情况下,我在usercontrol的代码隐藏及其xaml中指定了不同的命名空间,这导致了这个神秘的错误。