当项目编译正常时,XAML中的“名称空间中不存在”错误

时间:2013-03-31 07:46:07

标签: c# wpf xaml visual-studio-2012 designer

在使用编译和运行良好且没有任何编译器或运行时错误的项目时,我在设计视图中不断收到XAML错误和“无效标记”。

具体而言,我试图打开的项目位于:

http://www.codeproject.com/Articles/474212/Zombie-Explorer-A-N-Tier-application-from-top-to-b

问题似乎是在XAML中使用任何不属于我的源代码的外部库中的类,例如Cinch和MahApps包。我发现在某些情况下我可以通过NuGet包管理器添加包,它将替换引用,它有时会修复错误。

说实话,我不确定是否可以打开一个没有错误的XAML文件,甚至是同一解决方案中未解决的资源引用的一些错误。

我已经读过将“最大并行项目构建”更改为1可以解决这些类型的问题,但我已经尝试过并获得相同的结果。

有没有办法解决这些错误,以便我可以利用XAML设计师?

2 个答案:

答案 0 :(得分:0)

我下载了您的代码并正在查看它 - 您是否有一个特定的.xaml文件,您有疑问?

一般情况下,是的 - 当它编译并运行得很好时,获得设计器(无论是VS还是Blend)来渲染你的XAML合成而没有错误可能是一个试验。要解决此问题,您可以使用另一个Visual Studio实例调试Visual Studio渲染它的过程。或者,更费力的路线,通过剥离它直到没有错误显示,然后重新进入它,直到你看到错误重新出现。我自己创建了一个记录器来记录渲染过程中的错误(在VS Designer中),以帮助我发现它的不同之处。

重要的是要记住,Designer在解析和呈现xaml对象时,在重新创建代码时会有非常特殊的行为。它在xaml本身内执行代码。如果您的xaml在xaml中表达了导致此问题的绑定,它将创建视图模型对象。但是,令人惊讶的是,它确实执行主xaml对象的构造函数(例如Window或UserControl)。因此,如果您依赖于存在可以呈现的对象,请在设计时执行的代码中创建或初始化,例如property-getter或bound属性。

答案 1 :(得分:0)

我有一个类似的问题,虽然“缺失”类在我自己的项目中。我将项目从(镜像)网络驱动器移动到本地驱动器并解决了它 - 表明问题是VS的文件管理不佳。