如何手动更新多重绑定

Spo*_*ook 13 c# wpf converter multibinding

我遇到了问题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();
    }
Run Code Online (Sandbox Code Playgroud)

不过最近,我改变了BindingMultiBinding,并将上述溶液停止工作(的bIS null).有没有办法强制Multibinding更新目标属性?

最好的问候 - 幽灵.

Tho*_*que 26

对于多绑定,绑定表达式是a MultiBindingExpression,它继承自BindingExpressionBase但不是来自BindingExpression.因此,GetBindingExpression对于多绑定,返回null.相反,你可以使用BindingOperations.GetMultiBindingExpression:

MultiBindingExpression b = BindingOperations.GetMultiBindingExpression(colorRectangle, Rectangle.FillProperty);
Run Code Online (Sandbox Code Playgroud)

  • 大多数getBinding用于手动源更新...为此您可以使用通用:`BindingExpressionBase be = BindingOperations.GetBindingExpressionBase(colorRectangle,Rectangle.FillProperty);`这样,无论是Binding,MultiBinding还是任何其他将来的. (6认同)