0
XAML의 변환기에 이미 바인딩 된 FrameworkElement가 있다고 가정 해 봅니다. 프로그래밍 방식으로, 런타임에 기존 바인딩에 바인딩을 추가하고자합니다. 예를 들어 컨트롤의로드 된 이벤트에서 효과적으로 다중 바인딩을 만듭니다.이미 멀티 바인딩에 바인딩 된 컨트롤을 변환하는 방법
Visibility 속성에서 기존 바인딩을 가져 오는 방법은 무엇입니까?
XAML의 변환기에 이미 바인딩 된 FrameworkElement가 있다고 가정 해 봅니다. 프로그래밍 방식으로, 런타임에 기존 바인딩에 바인딩을 추가하고자합니다. 예를 들어 컨트롤의로드 된 이벤트에서 효과적으로 다중 바인딩을 만듭니다.이미 멀티 바인딩에 바인딩 된 컨트롤을 변환하는 방법
Visibility 속성에서 기존 바인딩을 가져 오는 방법은 무엇입니까?
당신은 같은 것을 할 수 있습니다
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);
당신은 [BindingOperations.GetBinding] 시도 할 수 있습니다 (http://msdn.microsoft.com/en-us/library/system.windows.data.bindingoperations을. getbinding.aspx)를 사용하여 기존 바인딩을 가져옵니다. – Clemens
하나의'bool' 속성으로 적절한 ViewModel을 생성하여 거기에 정의 된 로직에 따라 해당 속성을 '가시성'에 바인드하고 조작하십시오. –
@HighCore - 불행하게도 대부분의 응용 프로그램이 개발되는 것을 제어 할 수 없으며 대부분 MVVM 방식을 슬프게 사용하지 않습니다. (- 나는 그것을 좋아하지만 너무 많은 노력을 기울일 것입니다 유일한 방법은 각 컨트롤의로드 된 이벤트에서 기존 바인딩에 추가 할 기본 컨트롤을 수정하는 것입니다. – BobTheBuilder