2013-04-24 4 views
0

XAML의 변환기에 이미 바인딩 된 FrameworkElement가 있다고 가정 해 봅니다. 프로그래밍 방식으로, 런타임에 기존 바인딩에 바인딩을 추가하고자합니다. 예를 들어 컨트롤의로드 된 이벤트에서 효과적으로 다중 바인딩을 만듭니다.이미 멀티 바인딩에 바인딩 된 컨트롤을 변환하는 방법

Visibility 속성에서 기존 바인딩을 가져 오는 방법은 무엇입니까?

+1

당신은 [BindingOperations.GetBinding] 시도 할 수 있습니다 (http://msdn.microsoft.com/en-us/library/system.windows.data.bindingoperations을. getbinding.aspx)를 사용하여 기존 바인딩을 가져옵니다. – Clemens

+0

하나의'bool' 속성으로 적절한 ViewModel을 생성하여 거기에 정의 된 로직에 따라 해당 속성을 '가시성'에 바인드하고 조작하십시오. –

+0

@HighCore - 불행하게도 대부분의 응용 프로그램이 개발되는 것을 제어 할 수 없으며 대부분 MVVM 방식을 슬프게 사용하지 않습니다. (- 나는 그것을 좋아하지만 너무 많은 노력을 기울일 것입니다 유일한 방법은 각 컨트롤의로드 된 이벤트에서 기존 바인딩에 추가 할 기본 컨트롤을 수정하는 것입니다. – BobTheBuilder

답변

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