2012-03-16 5 views
0

나는이 상황이 많은 시간 : 자신의 DataContext 내가 CurrentItem로부터 데이터 그리드의 DataContext에서 속성에 액세스 할 필요가있는 DataGridTemplateColumns와데이터 바인딩 RelativeSource 대안

데이터 그리드를. 그래서 나는 결국 톤을 쓰게된다. {Binding DataContext.Something, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}, Mode=FindAncestor}}

더 아름다운 코드 솔루션이 있습니까?

+0

"RelativeSource = {RelativeSource AncestorType = {x : Type DataGrid}, Mode = FindAncestor}"를 중앙 집중화 할 수있는 XAML의 위치가 있으므로 "DataContext.Something"또는 "Something "바인딩의 나머지 부분에? – NestorArturo

+0

그 장소를 찾고 싶습니다. :) –

답변

0

DataGrid는 ItemsControl이며 표시되는 각 항목의 DataContext는 표시되는 항목으로 설정됩니다. DataGridXXXColumn 내에 멋진 간단한 바인딩을 만들 수 있습니다.

<DataGridTextColumn Binding="{Binding Name}" Header="Name" /> 

그러나 DataGrid의 DataContext를 얻으려는 경우 상대 소스 바인딩을 사용해야합니다. 이것은 많은 Xaml처럼 보일지 모르지만, 이것이 당신이해야 할 일이라고 제안 할 것입니다.

<DataGridTextColumn Binding="{Binding Parent.SomeProperty}" Header="???" /> 

그것은이다 : 나는 XAML 간단하게 생각할 수

있는 유일한 방법은 부모 뷰 모델을 다시 참조가이 같은 직접 결합 할 수 있도록, 컬렉션의 각 항목을 가지고있다 해결책이지만 아마도 합리적인 해결책은 아닙니다.

관련 문제