VS2010自定义MarkupExtension

Qst*_*onr 26 xaml visual-studio-2010 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设计师工作?

McD*_*ean 1

我编写了一些标记扩展,尽管代码运行,但我遇到了 Xaml 错误,就像您一直遇到的错误一样。假设您有有效的代码,我发现消除错误的唯一方法是通过重建选项,然后运行应用程序。

当然,问题是如果您再次更改或移动它,错误似乎又会出现。我的假设是静态编译无法完全解析您的标记正在执行的任何操作,并且基于此抛出错误。

就我而言,我正在编写一个方法绑定器,并且因为该对象在运行时之前为空,所以我最终不得不使用 new Object(); 并在运行时交换它。这很hacky,但编译错误让我发疯。

xaml 解析器在 2012 年似乎更好,但即使如此,仍然存在奇怪的错误。