MultiBinding不起作用但相应的Binding确实有效

时间:2011-03-11 17:50:00

标签: wpf binding converter multibinding

我有以下代码:

<local:StaffAtMeetingEditor DataContext="{Binding Meeting}" Grid.Row="1">
    <local:StaffAtMeetingEditor.InEditMode>
        <MultiBinding Converter="{StaticResource myMeetingLogEditableMultiConverter}">
            <Binding Path="ParentSI.ItemInEditMode"/>
        </MultiBinding>
    </local:StaffAtMeetingEditor.InEditMode>
</local:StaffAtMeetingEditor>

设置是包含控件的数据类型是“SIP_ServiceItem”。该类有一个名为“Meeting”的属性(设置为本地的DataContext:StaffAtMeetingEditor控件),该属性本身有一个名为“ParentSI”的成员,指向父SIP_ServiceItem对象。

问题是,如果我将其作为单个绑定传递(即从上面的代码中删除开始和结束MultiBinding标记,只留下绑定),它就可以正常工作。但是当我把它变成一个MultiBinding(我希望稍后添加一些其他Bindings),并尝试将绑定值传递给myMeetingLogEditableMultiConverter时,values(0)参数应该对应于布尔值ParentSI.ItemInEditMode实际上是MS.Internal.NamedObject,暗示某处有一个空引用。此外,永远不会评估ParentSI属性,因此完全错误。我不知道单绑定和多绑定情况之间的区别。

感谢。

2 个答案:

答案 0 :(得分:2)

我知道这有点老了,你现在可能已经想到了这一点,但我遇到了这个,因为我有类似的问题并且认为我会分享解决方案:我遇到了同样的问题并添加了属性ElementName和Mode如下:

<Binding Path="CurrentProvider.IsBusy" ElementName="parent" Mode="OneWay" />

希望这有助于某人,即使OP已经解决了他们的问题。

答案 1 :(得分:0)

可能是您应该尝试添加任何临时未使用的绑定值。例如:

<local:StaffAtMeetingEditor DataContext="{Binding Meeting}" Grid.Row="1">
    <local:StaffAtMeetingEditor.InEditMode>
        <MultiBinding Converter="{StaticResource myMeetingLogEditableMultiConverter}">
            <Binding Path="ParentSI.ItemInEditMode"/>
            <Binding Path="ParentSI"/>
        </MultiBinding>
    </local:StaffAtMeetingEditor.InEditMode>
</local:StaffAtMeetingEditor>

如果它不起作用那么你的实现是错误的,另一种情况 - 它是MultiBinding限制。