我有一个问题与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。
对于多绑定,绑定表达式是MultiBindingExpression
,它继承自BindingExpressionBase
,但不继承自BindingExpression
。因此,GetBindingExpression
对于多绑定返回null。你可以使用BindingOperations.GetMultiBindingExpression
:
MultiBindingExpression b = BindingOperations.GetMultiBindingExpression(colorRectangle, Rectangle.FillProperty);