我遇到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
,上述解决方案停止了工作(b
为null
)。有没有办法强制Multibinding
更新目标属性?
致敬 - Spook。
答案 0 :(得分:25)
对于多重绑定,绑定表达式为MultiBindingExpression
,它继承自BindingExpressionBase
,但不是BindingExpression
。因此GetBindingExpression
为多重绑定返回null。相反,您可以使用BindingOperations.GetMultiBindingExpression
:
MultiBindingExpression b = BindingOperations.GetMultiBindingExpression(colorRectangle, Rectangle.FillProperty);