2011-08-24 1 views
1

내 프로젝트에서 TreeView는 다양한 유형의 객체 트리 (모두 동일한 수퍼 클래스에서 서브 클래 싱 된)를 포함합니다.WPF DataTemplate을 사용하지만 'List'외부의 템플릿을 암시 적으로 선택

내 TreeView의 오른쪽에는 현재 트리에서 선택된 개체에 대한 정보를 표시하는 "패널"(지금은 그리드가 있음)이 있습니다. this page의 두 번째 예제에서와 같이 DataTemplate을 사용하여 서브 클래스 유형에 따라 내 "패널"의 내용을 & 내용에 맞게 조정합니다. 그러나 적절한 컨테이너를 찾을 수 없습니다 (목록 컨트롤을 원하지 않으므로 트리 뷰의 항목을 기준으로 디스플레이를 변경하고 싶습니다).

This question은 유형에 따라 동적으로 템플릿을 변경하기 때문에 대답이 적합하지 않다고 생각합니다.

e.e. 내가 좋아하는 뭔가를 기대했다 :

<[A Suitable Container] Margin="189,39,12,12" DataContext="{Binding ElementName=treeView1, Path=SelectedItem}"> 
<DataTemplate DataType="{x:Type local:subclass1}"> 
    <Grid> 
     <!-- subclass1 specific stuff --> 
    </Grid> 
</DataTemplate> 
<DataTemplate DataType="{x:Type local:subclass2}"> 
    <Grid> 
     <!-- subclass2 specific stuff --> 
    </Grid> 
</DataTemplate> 
</[A Suitable Container]> 

답변

4

사용을 완벽하게 작동 ContentControl

<ContentControl Content="{Binding ElementName=treeView1, Path=SelectedItem}"> 
    <ContentControl.Resources> 
     <DataTemplate DataType="{x:Type local:ViewModelA}"> 
      <local:ViewA /> 
     </DataTemplate> 
     <DataTemplate DataType="{x:Type local:ViewModelB}"> 
      <local:ViewB /> 
     </DataTemplate> 
    </ContentControl.Resources> 
</ContentControl> 
+0

A - 정말 감사합니다! – sebf

관련 문제