2010-05-25 1 views
0

2 개 또는 3 개의 바인딩 개체 (또는 데이터 템플릿)가 있다고 가정하는 몇 가지 솔루션을 발견했습니다. 이는 저에게 좋은 해결책이 아닙니다. 이 작업을 수행하는 쉬운 방법이 있습니까? 나는 시각적 인 나무를 통해 순환하는 것을 생각할 수 있고 바인딩을 그런 식으로 설정하지만 여전히이 솔루션은 매우 깔끔하게 보입니다.런타임시 템플릿 요소의 바인딩을 어떻게 변경합니까?

미리 감사드립니다.

답변

1

바인딩을 변경하고 바인딩을 변경하려는 UIElelement에 첨부 할 사용자 지정 연결된 속성을 작성할 수 있습니다. 이제해야 할 일은 바인딩이 변경되어야 할 때마다 연결된 속성에 대한 변경을 트리거하는 것입니다. 연결된 종속성 속성의 속성이 변경된 이벤트 표시 줄에서 UIElement에 액세스 할 수 있습니다.

<TextBlock local:Helper.DynamicBinding="{Binding SomeStatePropertyOfTheCurrentDataContext}" /> 

그리고 변경된 이벤트 핸들러 방법에

: 당신은이 같은 런타임에 바인딩을 변경의 필요성 건너 그러나 경우

private void OnDynamicBindingChanged(DependencyObject sender, PropertyChangedEventArgs args) 
{ 
    var senderButton = sender as TextBlock; 
    if((args.NewValue as string) == "MainText") 
    { 
     // bind to the property "MainText" of the current datacontext now 
    } 
    else if((args.NewValue as string) == "OtherText") 
    { 
     // bind to the property "OtherText" of the current datacontext now 
    } 
} 

, 기회는 당신의 전체 디자인을 향상시킬 수 있습니다!

+0

감사합니다. 내 문제가 해결 될 것 같습니다. 사용자 정의 컨트롤의 바인딩 기능에 대한 자동화 테스트를 수행 중이므로 바인딩을 변경해야합니다. – Koynov