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" という名前のプロパティ (local:StaffAtMeetingEditor コントロールの DataContext として設定されます) があり、それ自体に "ParentSI" というメンバーがあり、親 SIP_ServiceItem オブジェクトを指しています。

問題は、これを 1 つのバインドとして渡す (つまり、上記のコードから MultiBinding の開始タグと終了タグを削除し、Binding だけを残す) と、問題なく動作することです。しかし、これを MultiBinding にし (これに他のバインディングをすぐに追加したい)、バインドされた値を myMeetingLogEditableMultiConverter に渡そうとすると、ブール値の ParentSI.ItemInEditMode に対応するはずの values(0) パラメータが実際にはMS.Internal.NamedObject、どこかに null 参照があることを意味します。さらに、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 に答える