در اين مطلب خلاصهاي را در مورد نحوهي نمايش اطلاعات hierarchical (سلسله مراتبي، درختي) در WPF به همراه يك سري لينك مرتبط ملاحظه خواهيد نمود.
كلاس زير را در نظر بگيريد:
using System.Collections.Generic;
namespace WpfTests.Hierarchy.Raw.Model
{
public class Person
{
private readonly List<Person> _children = new List<Person>();
public IList<Person> Children
{
get { return _children; }
}
public string Name { get; set; }
}
}
using System.Collections.ObjectModel;
namespace WpfTests.Hierarchy.Raw.Model
{
public class People : ObservableCollection<Person>
{
public People()
{
this.Add(
new Person
{
Name = "P1",
Children =
{
new Person
{
Name="P2",
Children=
{
new Person
{
Name="P3",
Children=
{
new Person
{
Name="P4",
}
}
}
}
}
}
}
);
}
}
}
روش صحيح Binding اين نوع اطلاعات در WPF استفاده از HierarchicalDataTemplate است به صورت زير :
<TreeView ItemsSource="{Binding People}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
يك سري منبع آموزشي براي آشنايي بيشتر با HierarchicalDataTemplate
Hierarchical Databinding in WPF
Binding WPF Treeview and Objects
A TreeView, a HierarchicalDataTemplate, and a 2D collection
Non-recursive WPF TreeView controls
همچنين هنگام كار با بانكهاي اطلاعاتي:
- يك Extension method عالي قابل استفاده در LINQ to SQL و همچنين Entity framework به نام AsHierarchy
- مثالي ديگر از كاربرد LINQ to SQL براي اين منظور
- و يا مثالي از ADO.NET و DataSets و مثالي ديگر