如何手动更新多绑定



我有一个问题与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。

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

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

相关内容

  • 没有找到相关文章

最新更新