ItemsSource 属性将直接与集合对象或 DataContext 属性的绑定对象的集合属性绑定。
经验:
Class Root
{
public string Name;
public List<ChildRoot> childRoots = new List<ChildRoot>();
}
Class ChildRoot
{
public string childName;
}
将有两种方式绑定 ListBox 控件:
1)与DataContext绑定:
Root r = new Root()
r.Name = "ROOT1";
ChildRoot c1 = new ChildRoot()
c1.childName = "Child1";
r.childRoots.Add(c1);
c1 = new ChildRoot()
c1.childName = "Child2";
r.childRoots.Add(c1);
c1 = new ChildRoot()
c1.childName = "Child3";
r.childRoots.Add(c1);
treeView.DataContext = r;
<TreeViewItem ItemsSource="{Binding Path=childRoots}" Header="{Binding Path=Name}">
<HierarchicalDataTemplate DataType="{x:Type local:Root}" ItemsSource="{Binding Path=childRoots}">
2) 与 ItemSource 绑定:
ItemsSource 属性总是需要收集。在这里我们必须绑定 Root 的集合
List<Root> lstRoots = new List<Root>();
lstRoots.Add(r);
<HierarchicalDataTemplate DataType="{x:Type local:Root}" ItemsSource="{Binding Path=childRoots}">
在第一个示例中,我们绑定了 DataContext,该对象内部有对象,我们有与 ItemSource 属性绑定的集合,而在第二个示例中,我们直接将 ItemSource 属性与集合对象绑定。