我的ViewModel如下所示:
public class DirectoryViewModel : ViewModelBase
{
public ObservableCollection<DirectoryViewModel> SubDirectoryList { get; set; }
public ObservableCollection<FileViewModel> FileList { get; set; }
public string Name { get; set; }
}
在每个目录下,可能有自己的文件和子目录。如何让它的子目录和文件显示在TreeView的同一级别上?
答案 0 :(得分:3)
像这样改变你的课程:
public class DirectoryViewModel : ViewModelBase
{
public ObservableCollection<ViewModelBase> ItemsInDirectory { get; set; }
public string Name { get; set; }
}
ViewModelBase
必须是DirectoryViewModel
和FileViewModel
的基类。将所有文件和目录放入ItemsInDirectory
集合。
然后为课程HierarchicalDataTemplates
创建一个DirectoryViewModel
,为FileViewModel
创建一个
答案 1 :(得分:1)
一种选择是让DirectoryViewModel和FileViewModel从同一个TreeViewItemBase类派生。然后使用一个集合而不是两个集合,并让每个派生成员处理自己的特殊性(如果有的话,如果有的话,得到子成员。显示什么图标等)