VS2010自定义MarkupExtension

时间:2010-04-28 21:26:55

标签: visual-studio-2010 xaml markup-extensions

我们刚刚从vs2008切换到vs2010,我们的项目编译运行良好,没有任何问题。但是,xaml设计器有一些错误。这是希望有人能提供解决方案的错误之一。

我们有自定义MarkupExtension,我们在xaml中使用它来获取某些资源。像这样:

<Button Style="{l:GetResource Key=MyButtonStyle}" />

我知道我们可以使用StaticResource或DynamicResource。但是我们有理由使用自定义markupextension。

设计师的错误消息是:

  

'GetResourceExtension'对Setter.Value无效。唯一的   支持的MarkupExtension类型为DynamicResourceExtension和   BindingBase或派生类型。

我的问题是代码在vs2008中运行良好,并且在2010年运行良好,如何让2010设计师工作?

1 个答案:

答案 0 :(得分:1)

我已经编写了一些Markup Extensions,虽然代码运行但我得到的Xaml Error就像你一直得到的那样。假设你有有效的代码,我发现摆脱错误的唯一方法是通过rebuild选项然后运行应用程序。

当然问题是如果你再次改变它或移动它,错误似乎又回来了。我的假设是静态编译无法完全解决你的标记正在做什么,并且基于此抛出错误。

在我的情况下,我正在编写一个方法绑定器,因为该对象为null,直到运行时我最终不得不使用新的Object();并在运行时交换它。这很糟糕,但编译错误让我疯狂。

xaml解析器在2012年似乎更好,但即便如此,也有奇怪的错误。