2013-04-24 68 views
0

假設我有一個已經綁定到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

回答

1

你可能會做這樣的事情:

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);