2011-04-07 82 views
12

我遇到了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(); 
    } 

,但是,我改变了BindingMultiBinding,并将上述溶液停止工作(该bnull)。有没有办法强制Multibinding更新目标属性?

此致敬礼 - Spook。

+0

你有没有弄清楚为什么绑定/ Multibinding不响应CollectionChanged事件? – skybluecodeflier 2011-11-15 18:41:57

回答

24

对于多重结合,绑定表达式是MultiBindingExpression,它从BindingExpressionBase继承,但不是从BindingExpression继承。所以GetBindingExpression为多重绑定返回null。相反,你可以使用BindingOperations.GetMultiBindingExpression

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

很酷,有用。谢谢! – Spook 2011-04-07 08:56:25

+4

大部分getBinding用于手动源更新... 并为此您可以使用泛化:'BindingExpressionBase be = BindingOperations.GetBindingExpressionBase(colorRectangle,Rectangle.FillProperty);'这种方式它并不重要如果它是绑定, MultiBinding或任何其他将在以后。 – 2012-11-13 10:08:18