2011-03-11 87 views
2

我有以下代码: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(我想一些其他的绑定添加到此不久),并尝试通过对myMeetingLogEditableMultiConverter通过绑定的值,该值(0)参数,它应该对应于布尔ParentSI.ItemInEditMode实际上是一个是MS.Internal.NamedObject,意味着有一个空引用。此外,ParentSI属性从未被评估,所以有些事情完全错误。我不知道单绑定和多绑定情况之间的区别。

谢谢。

回答

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限制。

+0

您好,感谢您的提示,但我不认为这是问题 - 我最初有几个输入到多转换器,它仍然是不工作(所以为什么我又缩减为一个,为了简单起见)。 我的问题似乎是与此类似:http://stackoverflow.com/questions/3701732/cant-access-datacontext-in-multivalueconverter,但我看不出一个解决方案,在这种情况下工作。 – 2011-03-14 11:48:12

2

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

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

希望这可以帮助别人,即使OP有固定的问题。