2

我有以下代码:

<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(我希望尽快添加一些其他绑定)并尝试将绑定值传递给 myMeetingLogEditableMultiConverter 时,应该对应于布尔值 ParentSI.ItemInEditMode 的 values(0) 参数实际上是一个MS.Internal.NamedObject,暗示某处有空引用。此外,ParentSI 属性从未被评估过,因此出现了完全错误的情况。我不知道单绑定和多绑定案例之间的区别。

谢谢。

4

2 回答 2

2

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

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

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

于 2011-08-11T14:08:53.190 回答
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限制。

于 2011-03-14T04:06:55.807 回答