在WPF表单中加载设计师时出现错误。

3
我的应用程序一直运行良好,但突然在加载WPF表单中的设计师时出现错误。 对象引用未设置为对象的实例。 就像它在一个循环中一样。按下回车键一段时间后,我会得到这个错误。 Microsoft Visual Studio XAML UI Designer已停止工作。 之后,我会得到这个错误。 System.Runtime.Remoting.RemotingException [9980] 设计器进程意外终止! 方括号中的数字每次都在变化。
我正在使用Visual Studio 2012。我还没有运行应用程序,我只是从代码后台切换到设计模式。如果我编译和运行应用程序,它可以正常运行。 请帮忙解决。
编辑:
以下是三个错误的单个图像。(我不能发布多个链接) xamlerrors

当它产生第一个错误时,它应该包括一个链接来显示堆栈跟踪。这应该指向尚未创建的任何对象。 - mcalex
@mcalex,我还没有运行应用程序,我只是打开了设计器,它会抛出一个简单的消息框,显示这个消息。我可以给你看屏幕截图,但我没有足够的声望点数。 - Revanth
嗯,好的。我通常在Xaml设计器中遇到错误时会在设计时间显示堆栈跟踪链接(有时,即使一切都编译正常)。也许你可以在某个图像网站上发布一张图片(例如snag.gy)? - mcalex
2个回答

2

代码后台或者DataContext(如果您正在使用ViewModel)中出现了错误。在您修复了该错误之后,请单击点击此处重新加载设计器。这是因为设计器在设计时尝试加载所有内容,但由于存在错误,它无法加载,就像程序实际运行一样。那个空引用异常可能会误导人们尝试找出原因,因为如果您的代码后台或ViewModel中存在错误,它将被抛出。

需要检查的事项:

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

我正在使用ViewModel,在应用程序中没有任何错误。之前我在另一个页面遇到了同样的错误,但它自己解决了。现在这个页面没有解决。谢谢回复,请给予建议。 - Revanth
@Revanth 发布你的 XAMLViewModel 代码;否则,这只是猜测。基本上,我正在根据我在 WPF 中的经验遇到的情况来描述可能的情况。 - B.K.
谢谢BK,根据您的建议,我创建了一个新表单并逐行复制。问题出在其中一个静态实例绑定上。但是从一开始它没有抛出任何错误。现在我会深入挖掘原因。再次感谢您的想法。 - Revanth
@Revanth 没问题。有时候调试设计时和绑定相关的异常可能会很麻烦。 - B.K.

1
我注意到这些错误几乎总是由以下原因引起的:
  • 视图的无参构造函数中存在错误
  • 附加到视图的视图模型的构造函数中存在错误
请记住,当设计师加载时,它会调用视图的无参构造函数(必须有一个用于设计师!)。如果在那里执行了只能在运行时正确执行的“复杂操作”,则在设计时可能会出现错误。
对于从视图调用的视图模型的构造函数也是如此。


检查设计模式是否激活

例如,您不应该在构造函数中从存储库加载数据。 如果您在构造函数中执行此操作,则至少应像此处的答案中所解释的那样检查设计模式是否激活,并且仅在设计模式未激活时才在构造函数中执行复杂逻辑。


调试问题

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

该过程在这里详细描述:在设计视图中仅调试异常


是的。根据您的建议,刚刚添加了一个无参数构造函数。添加后,XAML 中静态实例绑定的所有错误消息都被清除了。将对其余绑定执行相同的操作。谢谢。 - Revanth
很高兴能帮到你 :-) 如果对你有用,请给我的答案投票。 - Martin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接