如何转换已经绑定到多重绑定的控件

问题描述:

假设我有一个已经绑定到XAML中的转换器的FrameworkElement。以编程方式,我希望在运行时追加绑定到现有的绑定 - 例如在控件的加载事件中,有效地使其成为多重绑定。如何转换已经绑定到多重绑定的控件

如何获取(例如)Visibility属性上的现有绑定。

+1

你可以试试[BindingOperations.GetBinding(http://msdn.microsoft.com/en-us/library/system.windows.data.bindingoperations。 getbinding.aspx)来获取现有的绑定。 – Clemens 2013-04-24 17:22:22

+0

用一个'bool'属性创建一个合适的ViewModel,根据这里定义的逻辑将'Visibility'绑定到并操作该属性。 – 2013-04-24 17:23:10

+0

@HighCore - 我不能控制大多数应用程序是如何开发的,而且大部分程序都不使用MVVM方法( - 我很喜欢它,但它会花费太多的精力以这种方式进行重新设计。唯一可行的方法是修改我的基本控件以追加到每个控件的加载事件中的现有绑定。 – BobTheBuilder 2013-04-24 17:25:30

你可能会做这样的事情:

var oldBinding = BindingOperations.GetBinding(element, UIElement.VisibilityProperty); 

var newBinding = new MultiBinding { Converter = ... }; 

var firstBinding = new Binding 
{ 
    Path = oldBinding.Path, 
    Source = oldBinding.Source // or RelativeSource or ElementName 
}; 

var secondBinding = new Binding 
{ 
    ... 
}; 

newBinding.Bindings.Add(firstBinding); 
newBinding.Bindings.Add(secondBinding); 

BindingOperations.SetBinding(element, UIElement.VisibilityProperty, newBinding);