2011-04-30 4 views
2

안녕하세요, ViewModel 용 dataTemplate이 있습니다.XAML : DataTemplate 내의 ListView 내에서 DataTemplate을 사용하여 실패를 바인딩합니다.

이 DataTemplate 내에서 ListView는 템플릿의 컬렉션에 바인딩되어 있으며 거기에 컬렉션의 항목 속성을 설정할 수 없게되어 있습니다.

속성의 사용 가능한 설정은 원래 ViewModel의 다른 모음에 있지만, 바인딩하는 데 어려움을 겪고 있습니다.

<DataTemplate DataType="{x:Type ViewModel}"> 

    <!-- Some irrelevant property bindings --> 

    <ListView ItemsSource="{Binding Path=TheCollection}"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <ComboBox ItemsSource="{Binding RelativeSource={RelativeSource SOMEAPPROPRIATERELATIVESOURCE}, 
              Path=AvailablePropertiesCollection}" SelectedItem="{Binding Path=TheProperty}" /> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
    </ListView> 

최상위 DataTemplate의 항목에 바인딩하는 좋은 방법이 있습니까?

답변

0

은 당신이 사용하고자하는 것입니다 믿습니다

ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListView}}, 
    Path=DataContext.AvailablePropertiesCollection}" 

이리스트 뷰의 데이터 컨텍스트에 AvailablePropertiesCollection에 결합한다.

+0

그래서 ListView는 DataTemplate에서 DataContext로 래핑 된 항목을 갖습니다. 의미가 있습니다. 나는 그것을 확인한 다음 올바르게 작동하면 올바른 대답을 줄 것입니다. –

+0

@ Ingó - 예, DataTemplate의 모든 것이 새로운 "데이터 컨텍스트"를 가져옵니다. 이 경우 ItemsSource의 항목이됩니다. ListView의 데이터 컨텍스트를 가져와야하는 것처럼 들리지만, 이는 내가 설명하는 것입니다. – CodeNaked

+0

완벽하게 작동하므로 간단하게 이해해야합니다. XAML을 익히려면 평생을 걸립니다. 고맙습니다. –

관련 문제