question I had posted 전에 데이터 바인딩과 UserControls에 관해서는 색, 크기 등을 변경할 수 있도록 간단한 속성 집합을 가져 오는 데 문제가있었습니다. Kent는 나에게 멋진 포인터를주었습니다. 그런 다음 새로운 UserControl을 작성하고 조언을 사용하여 잘 작동했습니다.DataContext를 분리하는 UserControl에서 명령 데이터 바인딩 문제가 있습니까?
이제 데이터 바인딩 명령을 사용하고 있습니다. 내 현재의 구조는 다음과 같습니다
창 --contains -> UserControlB --contains -> UserControlA
UserControlA에서이제 데이터 바인딩 특성이 잘 작동, 내 UserControlB이 동일한 속성을 노출하는 창 할 수 있도록 UserControlA를 간접적으로 변경하십시오. 문제는 UserControlB의 DataContext에이 같은 것을 설정되어 있습니다 :
<UserControl x:Name="root">
<Grid DataContext="{Binding ElementName=root}">
...
<Button Command="{Binding MyCommand}" />
...
</Grid>
</UserControl>
하지만 MyCommand 내 뷰 모델에 바인딩 할. DataContext를 개별적으로 설정할 수 있다고 생각했지만 Button을 XAML의 내 ViewModel을 가리 키도록하려면 어떻게해야합니까?
내가 related post을 찾았지만, 내가하고 싶은 것처럼 들리지 않았습니다. XAML이 아닌 코드로 ViewModel을 만들고 싶습니다.
덕분에, 나는 그것을 시도 줄 것입니다. 나는 물건을 가지고 실험을 시작해야하지만, 모든 것이 어떻게 연결되어 있는지, 그리고 조상을 설정하는 논리적 인 접근법을 알아 내려고 할 때 나는 항상 완전히 잃어버린다. – Dave
음 ... 아직 운이 없습니다. 이 오류가 발생합니다 : 'System.Windows.Data 오류 : 4 : 참조로 바인딩을위한 원본을 찾을 수 없습니다'RelativeSource FindAncestor, AncestorType = 'Company.MyPlugin', AncestorLevel = '1' '. BindingExpression : Path = DataContext.MyCommand; DataItem = null; 대상 요소는 'Button'(Name = ''); 대상 속성은 'Command'('ICommand'유형)입니다. – Dave
아직 datacontext 권한이없는 것 같습니다. 상대 소스 유형을 viewmodel의 datacontext를 갖도록 설정해야합니다. 또한 컨트롤에 대한 Grid의 datacontext를 덮어 쓰지 않으면 자동으로이 데이터를 얻을 수있는 것처럼 보입니다. 대신 datacontext가 부모로부터 자연스럽게 흐르도록 허용 할 수 있습니다. – poindexter12