[英]WPF how to bind self-referential dataset to a treeview
我是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
<TreeView ItemsSource="{Binding RootNodes}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding rsParentChild}">
<TextBlock Text="{Binding NodeDescription}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.