我在XAML文件中有这个DesignData文件(编译类型设置为DesignData):
<local:FooModel xmlns:local="clr-namespace:MyProject"
Name="Sample" FullPath="C:/www" />
我在FooModel
命名空间内有MyProject
个类,包含这两个属性。我正在获得&#34;姓名&#34; XAML中的属性用红色加下划线并显示以下消息:
错误1因为&#39; microsoft.expression.markup.semantics.metadata.reflectiontypenode&#39;是 在同一程序集中实现,您必须设置x:Name属性 而不是microsoft.expression.markup.semantics.metadata.ReflectionPropertyNode 属性。
我认为属性Name
与其他东西混淆了。我指的是FooModel
课程的属性,而不是其他任何内容。我没有收到FullPath
的警告。
答案 0 :(得分:2)
无法重现这一点。有一个类似的DesignData文件,完全没有问题,包括'Name'属性。你很没有错字。验证“自定义工具”和“自定义工具命名空间”为空。我还怀疑你的'参考'列表中有一个奇怪的汇编。你从哪里得到MS.Internal.Design ......? (该项目是否起源于Blend?)。在标准的VS创建项目中,此命名空间不会出现在任何程序集中。检查哪个程序集实现了此命名空间,并尝试将其从引用列表中删除。
答案 1 :(得分:0)
我遇到了同样的错误。重建解决方案后,错误会消失一段时间,但在Visual Studio(VS Professional,版本11.0.51106.01更新1)中打开相应的DesignData文件后会再次出现错误。
我尝试删除引用的程序集并清空该DesignData文件的“自定义工具”和“自定义工具命名空间”值。这些都没有帮助。在xaml文件中按F12不会带我到任何地方,它对我来说仅适用于.cs文件。
我的解决方案
我通过在其完整的命名空间中引用该属性来消除这个恼人的错误:classname.propertyname形式在一个专用于它的单独的xml元素中(而不是在父类的xml属性中引用它)。在你的情况下,这意味着:
<local:FooModel xmlns:local="clr-namespace:MyProject" FullPath="C:/www" >
<local:FooModel.Name>Sample</local:FooModel.Name>
</local:FooModel>