WPF/Silverlight中使用HierarchicalDataTemplate的类文件系统树视图



我的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必须是DirectoryViewModelFileViewModel的基类。将所有文件和目录放入ItemsInDirectory集合中。

然后创建2个HierarchicalDataTemplates一个给DirectoryViewModel一个给FileViewModel

一种选择是让DirectoryViewModel和FileViewModel都从同一个TreeViewItemBase类派生。然后使用一个集合而不是两个集合,并让每个派生成员处理自己的特殊性(比如,如果有的话,如何获得子成员)。显示什么图标,等等)

最新更新