WPF如何将自引用数据集绑定到树视图

我是WPF的初学者。 我想将包含节点和关系的以下DataSet绑定到TreeView 。 数据集是:

 internal static DataSet getData() { DataTable dt = new DataTable("data"); dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("ParentId", typeof(int)); dt.Columns.Add("NodeDescription"); dt.Rows.Add(1, null, "Employees"); dt.Rows.Add(2, null, "Cars"); dt.Rows.Add(3, 1, "Men"); dt.Rows.Add(4, 1, "Women"); dt.Rows.Add(5, 2, "BMW"); dt.Rows.Add(6, 2, "Lexus"); dt.Rows.Add(7, 3, "Adam Kowalski"); dt.Rows.Add(8, 3, "Dawid Nowacki"); dt.Rows.Add(9, 4, "Ilona Wacek"); DataSet ds = new DataSet(); ds.Tables.Add(dt); //add a relationship ds.Relations.Add("rsParentChild" ,ds.Tables["data"].Columns["Id"] ,ds.Tables["data"].Columns["ParentId"]); return ds; } 

我想拥有:

替代文字

现在我通过将所有数据表和ading节点恢复到树视图来实现这一点。 但是,我希望有一个直接的XAML绑定。

我想补充说,数据集将动态变化,并且可能存在许多嵌套级别。 谢谢。

这是一个有效的简单解决方案:

代码隐藏

 public partial class Window1 : Window { public Window1() { InitializeComponent(); var dataSet = getData(); _rootNodes = dataSet.Tables["data"].DefaultView; _rootNodes.RowFilter = "ParentId IS NULL"; this.DataContext = this; } private DataView _rootNodes; public DataView RootNodes { get { return _rootNodes; } } internal static DataSet getData() { ... } } 

XAML