使用MVVM在TreeView中显示实体

我正在按照MVVM模式制作WPF应用程序。 在这我使用entity framework,

我的实体结构很简单,它有3个实体:部门,课程,书籍,

一个部门可以有很多课程,一门课程可以有很多书,

现在我想在树视图中显示这个,所以我在wpf中的输出应该是这样的,

Department1 Course1 Book1 Book2 Course2 Book3 Department2 Course Book Department3 

在我的ViewModel中我有EntityContext对象。 但我不知道如何在树视图中显示这一点。 我怎么能做到这一点。

我准备了小样本来复制这个..

                     

Model和ViewModel类。

 public class Book :ViewModelBase { private string bookname = string.Empty; public string BookName { get { return bookname; } set { bookname = value; OnPropertyChanged("BookName"); } } public Book(string bookname) { BookName = bookname; } } 

系class

 public class Department : ViewModelBase { private List courses; public Department(string depname) { DepartmentName = depname; Courses = new List() { new Course("Course1"), new Course("Course2") }; } public List Courses { get { return courses; } set { courses = value; OnPropertyChanged("Courses"); } } public string DepartmentName { get; set; } } 

课程class

 public class Course :ViewModelBase { private List books; public Course(string coursename) { CourseName = coursename; Books = new List() { new Book("JJJJ"), new Book("KKKK"), new Book("OOOOO") }; } public List Books { get { return books; } set { books = value; OnPropertyChanged("Books"); } } public string CourseName { get; set; } } 

TreeViewModel类。

 public class TreeViewModel :ViewModelBase { private List departments; public TreeViewModel() { Departments = new List() { new Department("Department1"), new Department("Department2") }; } public List Departments { get { return departments; } set { departments = value; OnPropertyChanged("Departments"); } } } 

ViewModelBase类。

 public class ViewModelBase :INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public void OnPropertyChanged(string propname) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propname)); } } } 

最后它以分层格式显示数据..我希望这会让你满意……

您必须为此定义层次结构数据模板模板以下是如何使用它的示例。

我们需要为我们想要的嵌套级别定义HierachialDataTemplate的’n’级别。我们将使用HierarchicalDataTemplate类的ItemsSource属性来定义它。我们也可以对MenuControl执行相同的操作。