MultiBinding Converter上的绑定错误

时间:2016-02-25 21:46:04

标签: wpf data-binding

作为WPF的相对新手,我很难理解为什么我会在以下情况下遇到绑定错误。

我有以下XAML

<TextBlock.Text>
    <MultiBinding Converter="{StaticResource CardinalityConverter}">
        <Binding/>
        <Binding Path="ed.Min" />
        <Binding Path="ed.Max" />
    </MultiBinding>
</TextBlock.Text>

我得到的绑定错误如下

System.Windows.Data Warning: 40 : BindingExpression path error: 'ed' property not found on 'object' ''SDNode' (HashCode=2343823)'. BindingExpression:Path=ed.Min; DataItem='SDNode' (HashCode=2343823); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
System.Windows.Data Warning: 40 : BindingExpression path error: 'ed' property not found on 'object' ''SDNode' (HashCode=2343823)'. BindingExpression:Path=ed.Max; DataItem='SDNode' (HashCode=2343823); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')

如果我在&#34; CardinalityConverter&#34;中加入断点然后看到以下内容,您可以看到值(1)和值(2)未设置。

enter image description here

如果我展开值(0),则会看到以下内容

enter image description here

&#39; ED&#39;很明显,为什么绑定不承认这一点?

1 个答案:

答案 0 :(得分:0)

字段不能是Binding的源或目标,只有普通的CLR属性或依赖属性才能参与WPF的绑定系统。

尝试将绑定设置为以下内容:

<Binding Path="ED.Min" />
<Binding Path="ED.Max" />

如果我没有弄错的话,根据你提供的图片来判断你已经公开了一个名为ED的公共财产,所以绑定应该适用。

字段如下所示:

public class SomeClass
{
    public string SomeField = "Some Value";
}

虽然财产看起来像这样:

public class SomeClass
{
    public string SomeProperty { get; set; }
}