我的ViewModel是这样的:
public class DirectoryViewModel : ViewModelBase
{
public ObservableCollection<DirectoryViewModel> SubDirectoryList { get; set; }
public ObservableCollection<FileViewModel> FileList { get; set; }
public string Name { get; set; }
}
在每个目录下,可能有它自己的文件以及子目录。我怎么能使它的子目录和文件显示在同一层次的树视图?
像这样修改你的类:
public class DirectoryViewModel : ViewModelBase
{
public ObservableCollection<ViewModelBase> ItemsInDirectory { get; set; }
public string Name { get; set; }
}
ViewModelBase
必须是DirectoryViewModel
和FileViewModel
的基类。将所有文件和目录放入ItemsInDirectory
集合中。
然后创建2个HierarchicalDataTemplates
一个给DirectoryViewModel
一个给FileViewModel
一种选择是让DirectoryViewModel和FileViewModel都从同一个TreeViewItemBase类派生。然后使用一个集合而不是两个集合,并让每个派生成员处理自己的特殊性(比如,如果有的话,如何获得子成员)。显示什么图标,等等)