Binding
有问题。 Rectangle.Fill
依赖属性通过转换器绑定(bind)到 ObservableCollection
。虽然 ObservableCollection
实现了 INotifyCollectionChanged
,但绑定(bind)并未更新。然而,我设法通过将我的委托(delegate)附加到集合的更改通知事件并手动刷新绑定(bind)来解决这个问题:
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。
最佳答案
对于多重绑定(bind),绑定(bind)表达式是 MultiBindingExpression
,它继承自 BindingExpressionBase
,而不是 BindingExpression
。因此 GetBindingExpression
为多重绑定(bind)返回 null。相反,您可以使用 BindingOperations.GetMultiBindingExpression
:
MultiBindingExpression b = BindingOperations.GetMultiBindingExpression(colorRectangle, Rectangle.FillProperty);
关于c# - 如何手动更新多重绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5577887/