gpt4 book ai didi

c# - WPF 如何将自引用数据集绑定(bind)到 TreeView

转载 作者:行者123 更新时间:2023-11-30 15:09:38 25 4
gpt4 key购买 nike

我完全是 WPF 的初学者。我想将以下包含节点和关系的 DataSet 绑定(bind)到 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;
}

我想要:

alt text

现在我通过重新检索所有数据表并将节点添加到 TreeView 来实现这一点。但是,我希望有一个直接的 XAML 绑定(bind)。

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

最佳答案

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

代码隐藏

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>

关于c# - WPF 如何将自引用数据集绑定(bind)到 TreeView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4212568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com