나는 이것을 시도 :컨트롤의 DataContext를 WPF에서 해당 내용의 DataContext에 어떻게 바인딩합니까?
Binding binding = new Binding("Content.DataContext");
BindingOperations.SetBinding(tab, DataContextProperty, binding);
그것은 작동하지 않습니다. 나는 이유를 모른다.
나는 이것을 시도 :컨트롤의 DataContext를 WPF에서 해당 내용의 DataContext에 어떻게 바인딩합니까?
Binding binding = new Binding("Content.DataContext");
BindingOperations.SetBinding(tab, DataContextProperty, binding);
그것은 작동하지 않습니다. 나는 이유를 모른다.
바인딩 원본을 지정하지 않았습니다. 따라서 tab
요소의 로컬 DataContext를 사용합니다. tab
요소에는 아직 경로 (Content.DataContext
)가 의미있는 DataContext (설정하려는 항목)가 없으므로 작동하지 않습니다.
대신 같은 것을 사용합니다. (당신의 정확한 요구 사항에 따라이 대신 Binding.RelativeSource의 Binding.Source을 사용하여 조사 할 수 있습니다)
Binding binding = new Binding("Content.DataContext")
{
RelativeSource = RelativeSource.Self
};
BindingOperations.SetBinding(tab, DataContextProperty, binding);
을
RelativeSource 설정이 바인딩을 지정합니다 은 로컬 DataContext가 아닌 바인딩 대상과 같은 요소입니다. 따라서 컨트롤의 DataContext는 필요에 따라 해당 컨트롤의 ContentContent의 DataContext에 바인딩됩니다.
이 당신이 XAML에서 바인딩 뭘 하려는지 달성하기 위해 더 나은 방법은 아마이지만, 어쨌든 뒤에 코드를 사용하는 경우, 당신은 대신 다음과 같은 시도 할 수 있습니다 : 어떤없이
FrameworkElement fe = tab.Content as FrameworkElement
if (fe != null)
tab.DataContext = fe.DataContext;
제본.
컴파일되지 않습니다. 내용이 형식 개체로 선언되어 있고 개체에 DataContext 속성이 없습니다. – itowlson
고정 ........... –
선언적으로 시도해 보셨습니까? (xaml을 통해)? – Pierreten