2014-02-23 2 views
0

TreeView 인 WPF 응용 프로그램이 있습니다. 나는 TreeView에 파일 및/또는 폴더를 끌어다 놓습니다. 드래그 된 항목이 감지하도록 설정된 폴더 인 경우이 디렉터리의 최상위 수준을 검색합니다.TreeViewItem 하위를 동적으로 표시

내가 붙어있는 곳은이 내부 파일을 TreeView에 표시하는 것입니다. 이 내부 파일을 폴더 항목의 하위 항목으로 표시하고 싶습니다. 나는에서 내부 콜렉션에 ObservableCollectionFileList의 객체를 할당

public class FileList 
{ 
    public enum FileType { File, Folder }; 

    public FileType Type { get; set; } 
    public string Name { get; set; } 

    private ObservableCollection<FileList> innerFiles; 
    public ObservableCollection<FileList> InnerFiles 
    { 
     get 
     { 

      return innerFiles; 
     } 
     set 
     { 
      innerFiles = value; 
     } 
    } 

    public FileList(string file) 
    { 
     Name = file; 
     Type = FolderOrFile(file); 
    } 
} 

TreeView.ItemTemplate

<HierarchicalDataTemplate> 
    <TextBlock Text="{Binding Name}"> 
     <TextBlock.ContextMenu> 
      <ContextMenu> 
       <MenuItem Name="mnuExpand" Header="Expand" Click="mnuExpand_Click" /> 
      </ContextMenu> 
     </TextBlock.ContextMenu> 
    </TextBlock> 

    <HierarchicalDataTemplate.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding InnerFiles}" /> 
     </DataTemplate> 
    </HierarchicalDataTemplate.ItemTemplate> 

</HierarchicalDataTemplate> 

내에서 XAML 코드는 다음과 같습니다

은 트 리뷰에서 항목을 모델링하는 클래스입니다 TreeViewItemFileList을 누른 다음 눈금을 새로 고치지 만 이러한 자식 항목은 나타나지 않습니다. TreeView not showing my Children

그러나 나는 가능성이 AS/검색 아래 가능한 한 많은 수준을 열고 자 :

나는 다음을 시도했다.

도움을 주시면 감사하겠습니다.

답변

0

HierarchicalDataTemplate 자식 항목의 소스가 ItemsSource 속성을 사용하는 개체를 말해야합니다. 대신 다음을 시도하십시오.

<HierarchicalDataTemplate ItemsSource="{Binding InnerFiles}"> 
    <TextBlock Text="{Binding Name}"> <!-- DataTemplate for parent --> 
     <TextBlock.ContextMenu> 
      <ContextMenu> 
       <MenuItem Name="mnuExpand" Header="Expand" Click="mnuExpand_Click" /> 
      </ContextMenu> 
     </TextBlock.ContextMenu> 
    </TextBlock>  
    <HierarchicalDataTemplate.ItemTemplate> 
     <DataTemplate> <!-- DataTemplate for children --> 
      <TextBlock Text="{Binding Name}" /> 
     </DataTemplate> 
    </HierarchicalDataTemplate.ItemTemplate>  
</HierarchicalDataTemplate> 

자세한 내용은 MSDN의 HierarchicalDataTemplate Class을 참조하십시오.

+0

고마워요! 이것은 큰 도움이되었습니다. 이제 하위 파일을 표시 할 수 있습니다. 지금 내가 가진 유일한 문제는 부모의 이름을 표시 할 수 없다는 것입니다. 각 상위 항목의 색상을 지정하여 파일인지 폴더인지 식별하지만 표시되는 이름 텍스트는 표시되지 않습니다. ItemTemplate이 설정 될 때 나는'DisplayMemberPath'를 사용할 수 없습니다. – tjheslin1

+0

아, 미안 해요, 템플릿이 섞여있는 것 같습니다. 내 대답을 편집 했으니 까, 그게 더 낫지. – Sheridan

+0

정말 고마워. 그러나 ' – tjheslin1