【问题标题】:VS2010 Custom MarkupExtensionVS2010 自定义标记扩展
【发布时间】:2011-02-13 13:33:39
【问题描述】:

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

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

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

我知道我们可以使用 StaticResource 或 DynamicResource。但是,我们有理由使用自定义标记扩展。

设计师的错误信息是:

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

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

【问题讨论】:

  • 你在 Blend 中试过吗?我想知道 Cyder(VS20120 XAML 设计器)是否根本无法处理自定义标记扩展。这不会让我感到惊讶,因为它非常敏感,尽管这是一个基本的。此错误是否会使设计器崩溃,或者它可以正常工作并且只是显示为错误?
  • 您已经找到解决方案了吗?

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


【解决方案1】:

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

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

在我的例子中,我正在编写一个方法绑定器,并且由于对象在运行时之前为空,我最终不得不使用 new Object();并在运行时将其换出。这很 hacky,但编译错误让我发疯了。

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

【讨论】:

  • 你能提供一些代码sn-p你是如何解决这个问题的吗?
猜你喜欢
  • 2017-05-05
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
  • 2018-03-04
  • 2023-03-28
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多