2013-06-14 2 views
0

항목 템플릿을 사용하여 그리드의 행을 표시하는 방법을 정의합니다.ItemTemplate에 대해 정의 된 ItemsSource를 재정의하는 방법은 무엇입니까?

<grid ...> 
    (...) 
    <ScrollViewer 
      ItemTemplate="{StaticResource GridRowItemDataTemplate}" 
      ItemsSource="{Binding GridRows}" /> 
    </ScrollViewer> 
</grid> 

지금까지 너무 좋은 : 그리드 정의 (간체)는 항목 템플릿 소스 (행의 컬렉션) GridRows 것을 보여준다. 항목 템플릿에서

는 텍스트 상자는 GridRows[i].ImportZoneName에 물론 해결 ImportZoneName, 바인딩되어, 이것은 내가 원하는 정확히 :

이제
<DataTemplate x:Key="GridRowItemDataTemplate"> 
    <Grid> 
     <TextBlock {Binding ImportZoneName}" /> 
     <ComboBox 
      SelectedItem="{Binding SelectedModelingTypeValue}" 
      ItemsSource="{Binding ModelingTypes}" /> 
    </Grid> 
</DataTemplate> 

문제 : 나는 또한 콤보 상자를 바인딩 할 내보기 모델의 다른 속성 (ModelingTypes)으로 이동하십시오. 이 property는, GridRows에는 전혀 링크되어 있지 않습니다. WPF에게 항목 템플릿 소스를 무시 (또는 잊어 버리라고) 할 수있는 방법은 무엇입니까?

많은 분들께 감사드립니다.

BTW, 나는이 간단한 바인딩의 경우 아직 간단한 가이드를 찾을 수 없습니다 ... 사람이 같은 가이드에 대한 링크가있는 경우, 나는

답변

2

당신은 DataContext를 얻을 수 있습니다 영원히 그/그녀 :) 축복하실 것입니다 이 같은 상위 목록 :

<DataTemplate x:Key="GridRowItemDataTemplate"> 
    <Grid> 
     <TextBlock {Binding ImportZoneName}" /> 
     <ComboBox 
      SelectedItem="{Binding SelectedModelingTypeValue}" 
      ItemsSource="{Binding DataContext.ModelingTypes, 
          RelativeSource={RelativeSource FindAncestor, 
          AncestorType=Grid}}" /> 
    </Grid> 
</DataTemplate> 

만큼의 DataContext는 속성이, 당신이 사용하는 그리드 (이 질문에서, 분명하지 않은 확실하지)의 종류에 Grid 교체 ModelingTypes

+0

네, 맞습니다. 그것이야! 전에 비슷한 것을 시도했지만 다른 버그가 있습니다 : 값과 이름이 속성으로 선언되지 않았습니다 ... 젠장! 이제 완벽하게 작동합니다. 다시 한번 감사드립니다 :) – SRO