14

に問題がありましたBinding。依存関係プロパティは、コンバーターでRectangle.FillにバインドされていObservableCollectionました。をObservableCollection実装しますINotifyCollectionChangedが、バインディングは更新されませんでした。ただし、コレクションの変更通知イベントに委任をアタッチし、バインディングを手動で更新することで、これを解決することができました。

    void ColorsCollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
    {
        BindingExpression b = colorRectangle.GetBindingExpression(Rectangle.FillProperty);
        if (b != null)
            b.UpdateTarget();
    }

しかし、最近、に変更したBindingところMultiBinding、上記の解決策が機能しなくなりました(bis null)。にターゲットプロパティを強制的Multibindingに更新する方法はありますか?

よろしく-スプーク。

4

1 に答える 1

27

マルチバインディングの場合、バインディング式は、MultiBindingExpressionから継承しますBindingExpressionBaseが、からは継承しませんBindingExpression。したがってGetBindingExpression、マルチバインディングの場合はnullを返します。代わりに使用できますBindingOperations.GetMultiBindingExpression

MultiBindingExpression b = BindingOperations.GetMultiBindingExpression(colorRectangle, Rectangle.FillProperty);
于 2011-04-07T08:17:28.613 に答える