WPF how to bind self-referential dataset to a treeview(WPF如何将自引用数据集绑定到树视图)
问题描述
I am a total beginner in WPF. I would like to bind the following DataSet containing nodes and relations to a TreeView. The dataset is:
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;
}
I would like to have:
Now I achieve this by resursive retrieveing all datatable and ading nodes to the treeview. However, I hope there is a direct XAML binding.
I'd like to add that the dataset will be dynamically changing and there might many nesting levels. Thanks.
Here's a simple solution that works :
Code-behind
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
<TreeView ItemsSource="{Binding RootNodes}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding rsParentChild}">
<TextBlock Text="{Binding NodeDescription}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
这篇关于WPF如何将自引用数据集绑定到树视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:WPF如何将自引用数据集绑定到树视图
基础教程推荐
- 首先创建代码,多对多,关联表中的附加字段 2022-01-01
- 全局 ASAX - 获取服务器名称 2022-01-01
- JSON.NET 中基于属性的类型解析 2022-01-01
- 是否可以在 asp classic 和 asp.net 之间共享会话状态 2022-01-01
- 经典 Asp 中的 ResolveUrl/Url.Content 等效项 2022-01-01
- 错误“此流不支持搜索操作"在 C# 中 2022-01-01
- 如何动态获取文本框中datagridview列的总和 2022-01-01
- 将事件 TextChanged 分配给表单中的所有文本框 2022-01-01
- 在 VS2010 中的 Post Build 事件中将 bin 文件复制到物 2022-01-01
- 从 VS 2017 .NET Core 项目的发布目录中排除文件 2022-01-01
