C# 动态显示TreeViewItem子项

C# 动态显示TreeViewItem子项,c#,wpf,xaml,treeview,C#,Wpf,Xaml,Treeview,我有一个带有TreeView的WPF应用程序。我将文件和/或文件夹拖放到此TreeView。如果拖动的项目是一个文件夹(我已设置为检测),我将搜索该目录的顶层 我被困在TreeView上显示这些内部文件。我希望这些内部文件显示为文件夹项的子项 这是在TreeView中为项目建模的类: public class FileList { public enum FileType { File, Folder }; public FileType Type { get; set; }

我有一个带有
TreeView
的WPF应用程序。我将文件和/或文件夹拖放到此
TreeView
。如果拖动的项目是一个文件夹(我已设置为检测),我将搜索该目录的顶层

我被困在
TreeView
上显示这些内部文件。我希望这些内部文件显示为文件夹项的子项

这是在TreeView中为项目建模的类:

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);
    }
}
我将
FileList
对象的
observeCollection
分配给
treevieItem
FileList
中的内部集合,然后刷新网格,但这些子项不会出现

我尝试了以下几点:

然而,我希望尽可能多地打开/搜索级别


非常感谢您的帮助。

您需要告诉
HierarchycalDataTemplate
子项的源对象使用的是
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上的。

谢谢!这是一个很大的帮助。我现在可以显示子文件了。我现在唯一的问题是无法显示父对象的名称。我给每个最上面的项目上色,以确定它是文件还是文件夹,这是可见的,但我看不到名称文本。我无法使用
DisplayMemberPath
,因为ItemTemplate已设置。哦,是的,对不起,我好像把你的模板弄错了。我编辑了我的答案,看看这对你是否更好。太好了,谢谢。但是,我不知道datatemplate如何为父级工作,因为它在
中定义为
datatemplate
。。。它扩展了
DataTemplate
类。
<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>