类似文件系统的TreeView在WPF / Silverlight中使用HierarchicalDataTemplate

时间:2011-11-23 12:16:18

标签: wpf silverlight mvvm

我的ViewModel如下所示:

public class DirectoryViewModel : ViewModelBase
    {

        public ObservableCollection<DirectoryViewModel> SubDirectoryList { get; set; }

        public ObservableCollection<FileViewModel> FileList { get; set; }

        public string Name { get; set; } 
    }

在每个目录下,可能有自己的文件和子目录。如何让它的子目录和文件显示在TreeView的同一级别上?

2 个答案:

答案 0 :(得分:3)

像这样改变你的课程:

public class DirectoryViewModel : ViewModelBase
{

    public ObservableCollection<ViewModelBase> ItemsInDirectory { get; set; }

    public string Name { get; set; } 
}

ViewModelBase必须是DirectoryViewModelFileViewModel的基类。将所有文件和目录放入ItemsInDirectory集合。

然后为课程HierarchicalDataTemplates创建一个DirectoryViewModel,为FileViewModel创建一个

答案 1 :(得分:1)

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