我有一个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);
}
}
这是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>
我将ObservableCollection
FileList
个TreeViewItem
个对象分配给FileList
的{{1}}中的内部集合,然后刷新网格,但这些子项不会出现。
我尝试了以下内容:TreeView not showing my Children
但是我希望有可能打开/搜索尽可能多的关卡。
非常感谢任何帮助。
答案 0 :(得分: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。