我知道我可以为特定类型的元素重新绑定特定属性的所有实例,就像重新绑定所有Textblock的Text属性的方法一样。
public void Rebind()
{
foreach (var textBlock in LayoutRoot.GetDescendents().OfType<TextBlock>())
{
BindingExpression bindExp = textBlock.GetBindingExpression(TextBlock.TextProperty);
if (bindExp != null)
{
Binding bind = bindExp.ParentBinding;
textBlock.SetBinding(TextBlock.TextProperty, bind);
}
}
}
我希望能够做的是重新绑定所有具有可视树中所有元素绑定的属性。更具体地说,我想重新绑定使用特定值转换器的所有绑定。我怎么能这样做?
答案 0 :(得分:1)
由于FrameworkElement
无法枚举当前适用于它的绑定表达式集,因此这实际上不可行。
为了实现这一点,您需要首先收集可能适用的所有依赖项属性(至少在每个元素类型但是会增加更多复杂性),然后在每个元素上尝试GetBindingExpression
。真实的丑陋和真正的慢。
时间设计此要求。