以wpf格式加载设计器时出错

时间:2014-11-13 06:49:26

标签: wpf xaml designer

我的应用程序工作正常,在以wpf格式加载设计器时突然发生错误。

对象引用未设置为对象的实例。

好像它处于循环中。按下回车按钮一段时间后。我得到了这个错误。

Microsoft Visual Studio XAML UI Designer已停止工作。

在此之后,即时通讯。

System.Runtime.Remoting.RemotingException [9980]设计师流程意外终止!

方括号中的数字正在改变evrytime。

我正在使用Visual Studio 2012.我还没有运行应用程序,我只是从代码背后切换到设计师模式。如果我编译并运行该应用程序,它运行正常。 请帮助。

编辑:

以下是单张图片中的三个错误。 (我不能发布超过一个链接)

xamlerrors

2 个答案:

答案 0 :(得分:2)

代码隐藏或DataContext中存在错误(如果您使用的是ViewModel)。修复该错误后,点击Click here to reload the designer。发生的事情是设计师试图在设计时加载所有内容,因为出现错误,它无法,就像程序实际运行一样。在尝试找出原因方面,该空引用异常可能有点误导,因为如果您的代码隐藏或ViewModel中有错误,它将被抛出。

要检查的事项:

  1. 您的View是否引用了正确的ViewModel?
  2. View的代码隐藏部分是否与View名称匹配?有些人复制他们的视图,但忘记在代码隐藏中更改类名。
  3. 您的ViewModel中是否有任何错误?
  4. 模特怎么样?如果它们在设计时加载并包含错误,则可能导致上述异常。

答案 1 :(得分:1)

我注意到这些错误几乎每次都是由

引起的
  • 视图的无参数构造函数中的错误
  • 视图模型的构造函数中的错误,该错误附加到视图

请记住,当设计器加载时,它会调用视图的无参数构造函数(设计者必须有一个!)。如果有复杂的东西"在那里只能在运行时正确执行,在设计时可能会出错。

对于从视图中调用的视图模型的构造函数也是如此。


检查设计模式是否有效

例如,您不应该从构造函数中的存储库加载数据。 如果你在构造函数中执行它,至少检查设计模式是否处于活动状态,如本answer here中有关GetIsInDesignMode附加属性的解释,如果设计模式只在构造函数中执行复杂逻辑不活跃。


调试问题

您还可以调试问题。为此,您必须打开Visual Studio的第二个实例,并从那里调试原始Visual Studio实例的设计器进程。

此处详细介绍了此过程:Debugging an Exception (only) occurring in design view