당신은 FrameworkElement.GetBindingExpression를 사용하여 기존의 Binding
를 얻을 수 있습니다. 다음은 샘플입니다 :
는
FrameworkElement yourControl = null; // the code to get the control goes here
BindingExpression bindingExpression =
yourControl.GetBindingExpression(TextBox.Background);
Binding binding = bindingExpression.ParentBinding; // it's your binding
그런 다음, 설정, 속성 (필요한 경우 변경 대상을) 새로운 Binding
객체를 생성하고이를 연결하는 SetBinding
를 사용합니다.
UPDATE 바인딩 소스에 대한 지금
.
이 속성을 명시 적으로 설정 한 경우에만 Source
속성이 null이 아닌 것에 유의하십시오. Binding
소스
다른 옵션 포함
- 특정 요소 :
Binding.RelativeSource
가 RelativeSource
Mode=RelativeSourceMode.TemplatedParent
바인딩 대상 제어로 설정된 경우 사용했을 Binding.ElementName
속성
- 템플릿 제어를 설정하는 경우에 사용 :
Binding.RelativeSource
이 으로 설정된 경우 사용 Mode=RelativeSourceMode.TemplatedParent
DataContext
: Source
, 이전 3 옵션이 적용되지 않습니다.
을 복제하려면 이러한 옵션을 모두 확인해야합니다.
그러나 데이터 항목 만 있으면 BindingExpression.DataItem
속성을 사용하는 것이 좋으며 바인딩 소스 인 실제 데이터 항목을 반환해야합니다.
정렬 할 대상 : 저는 XAML을 제어 할 수 없습니다. 나는 TextBox에 영향을 줄 수있는 Behavior를 개발하려고 노력했다. 예를 들어, XAML 내부의 사용자가 TextBox의 배경에 바인딩을 설정합니다. 그러나 그가 내 행동을 적용한 후에 나는 (행동의 내부에서) 그 배경을 가지고 다른 것으로 바꾸기를 원한다. (나는 다른 브러시로 원래 배경을 채우고 싶다.) 바운드 DependencyProperty에서 현재 값을 추출하는 방법을 알게되면 승리의 절반 단계가됩니다.나는 GetValue를 사용하려고 시도했다. 아무것도 반환하지 않는다. – Illidan