2011-03-11 85 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有固定的問題。