如何手动更新多重绑定

时间:2011-04-07 08:09:54

标签: 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();
    }

但是,最近我将Binding更改为MultiBinding,上述解决方案停止了工作(bnull)。有没有办法强制Multibinding更新目标属性?

致敬 - Spook。

1 个答案:

答案 0 :(得分:25)

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

MultiBindingExpression b = BindingOperations.GetMultiBindingExpression(colorRectangle, Rectangle.FillProperty);