我有以下代码:
<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属性,因此完全错误。我不知道单绑定和多绑定情况之间的区别。
感谢。
答案 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
限制。