【发布时间】:2020-03-11 20:25:27
【问题描述】:
我遇到了一个 XAML 问题,在一个使用 vs2010 的项目中,我们使用自己的 CustomBinding
在我的 XAML 中使用 DynamicResource 时,设计师会抛出以下异常:
CustomBinding 对 Setter.Value 无效。唯一受支持的 MarkupExtension 类型是 DynamicResourceExtension 和 BindingBase 或派生类型。
即使它没有在该特定扩展中使用。
<SomeControl Value="{CustomBinding SomeValue} Style="{DynamicResource SomeStyle}"/>
Style="{DynamicResource SomeStyle}" 是抛出设计时异常的部分,因此永远不会设置样式。
如果有人遇到过类似的问题,请指教。
【问题讨论】:
-
你的
CustomBinding是从Binding类派生的吗? -
它源自 MarkupExtension
-
是否可以安全地假设您缺少的报价 (
Value="...) 在您的实际源代码控制中没有丢失?如果有,CustomBinding的定义是什么?如果如您所说,它源自MarkupExtension,那么您的答案应该很明显:您必须从DynamicResourceExtension或BindingBase派生,如错误消息所示。 -
true ,但是在使用 CustomBinding 的任何地方都没有应用 Style="{DynamicResource SomeStyle}" 时会出现错误
-
我相信它是在抱怨错误的代码块——实际上是 SomeStyle 定义中的代码引发了问题。 -- 如果你打开设计器到那个特定的文件,你可能会得到智能感知帮助。 - 您可能在某处使用属性设置器,将值设置为 MarkupExtension 之类的东西 - 这不起作用,因为您正在为样式定义(而不是目标对象)指定值 - 对我来说似乎很愚蠢; 但不要对信使开枪——我没有设计 XAML!)。