我有一个具有TargetNullValue的数据绑定按钮:

<Button Content="{Binding Path=NextItem, Mode=OneWay, TargetNullValue='None'}" />


效果很好,当NextItem为null时,按钮显示为“无”。但是我想将null值绑定到某些东西。

为了简化起见,我们假设我在ViewModel上有一个名为NullValue的属性,该属性在null时返回要绑定的字符串:

<Button Content="{Binding Path=NextItem, Mode=OneWay, TargetNullValue={Binding Path=NullValue}}" />


但这引发:

System.Windows.Markup.XamlParseException: Provide value on 'System.Windows.Data.Binding' threw an exception. [Line: 129 Position: 92]
---> System.InvalidOperationException: Operation is not valid due to the current state of the object.
at MS.Internal.XamlManagedRuntimeRPInvokes.TryApplyMarkupExtensionValue(Object target, XamlPropertyToken propertyToken, Object value)
at MS.Internal.XamlManagedRuntimeRPInvokes.SetValue(XamlTypeToken inType, XamlQualifiedObject& inObj, XamlPropertyToken inProperty, XamlQualifiedObject& inValue)


我真正想做的是将null值绑定到resx,因此我将其放在控件的资源字典中,并按如下方式更改绑定:

<res:AppResources x:Key="appResources" />
...
<Button Content="{Binding Path=NextItem, Mode=OneWay, TargetNullValue={Binding Path=NullValue,Source={StaticResource appResources}}}" />


这也会引发相同的异常。有什么建议?

最佳答案

我在Connect上为此创建了一个问题。如果有任何人遇到此问题,请对错误进行投票。

https://connect.microsoft.com/VisualStudio/feedback/details/632602/silverlight-4-targetnullvalue-binding-to-resource

09-08 08:22