我们刚刚从vs2008切换到vs2010,我们的项目编译运行良好,没有任何问题。但是,xaml设计器有一些错误。这是希望有人能提供解决方案的错误之一。
我们有自定义MarkupExtension,我们在xaml中使用它来获取某些资源。像这样:
<Button Style="{l:GetResource Key=MyButtonStyle}" />
我知道我们可以使用StaticResource或DynamicResource。但是我们有理由使用自定义markupextension。
设计师的错误消息是:
'GetResourceExtension'对Setter.Value无效。唯一的 支持的MarkupExtension类型为
DynamicResourceExtension
和BindingBase
或派生类型。
我的问题是代码在vs2008中运行良好,并且在2010年运行良好,如何让2010设计师工作?
答案 0 :(得分:1)
我已经编写了一些Markup Extensions,虽然代码运行但我得到的Xaml Error就像你一直得到的那样。假设你有有效的代码,我发现摆脱错误的唯一方法是通过rebuild选项然后运行应用程序。
当然问题是如果你再次改变它或移动它,错误似乎又回来了。我的假设是静态编译无法完全解决你的标记正在做什么,并且基于此抛出错误。
在我的情况下,我正在编写一个方法绑定器,因为该对象为null,直到运行时我最终不得不使用新的Object();并在运行时交换它。这很糟糕,但编译错误让我疯狂。
xaml解析器在2012年似乎更好,但即便如此,也有奇怪的错误。