2011-03-24 114 views
4

我有这样一个类(介绍C#类及其字段,方法等):WPF XAML - TreeView的分层数据模板 - 多个项目源

public class CSharpType 
{ 
    public string Name { get; private set; } 
    public List<CSharpMethod> Methods { get; private set; } 
    public List<CSharpField> Fields { get; private set; } 
    public List<CSharpProperty> Properties { get; private set; } 
    .... 
} 

CShartpType的集合中的返回:

public List<CSharpType> TypeCollection 
    { 
     get 
     { 
      TypeCollection kolekcjaTypow = metricsCollection.Types; 
      Dictionary<string, CSharpType> typy = kolekcjaTypow.TypeDictionary; 
      var result = typy.Values.ToList(); 
      return result; 
     } 
    } 

各个领域,方法,属性有一个 “名称” 属性 ,我想有TreeView控件(如):

Person 
    + Fields 
     + field1 name from Fields collection 
     + field2 name from Fields collection 
     ... 
    + Methods 
     .... 
    + Properties 

sholud xaml看起来像什么样子?感谢您的帮助

+0

有你看了样品XAML在http://msdn.microsoft.com/en-us/library/system.windows.hierarchicaldatatemplate.aspx ? – 2011-03-24 22:57:27

+0

是的。这是我的TreeView: BeginnerWpf 2011-03-24 23:09:33

回答

0

如果类如下所示:

public class FatherClass 
{ 
    public string Name { get; set; } 
    public List<ChildClass> Children { get; set; } 
} 

public class ChildClass 
{ 
    public string Name { get; set; } 
} 

,并在窗口,我有以下数据的构造函数:

 List<FatherClass> list = new List<FatherClass>(); 

     list.Add(new FatherClass { Name = "First Father" }); 
     list.Add(new FatherClass { Name = "Second Father" }); 

     list[0].Children = new List<ChildClass>(); 
     list[1].Children = new List<ChildClass>(); 

     list[0].Children.Add(new ChildClass { Name = "FirstChild" }); 
     list[0].Children.Add(new ChildClass { Name = "SecondChild" }); 
     list[1].Children.Add(new ChildClass { Name = "ThirdChild" }); 
     list[1].Children.Add(new ChildClass { Name = "ForthChild" }); 

     this.DataContext = list; 

然后以创建分层数据绑定,您应该在资源中定义两个分层数据模板以“捕捉”相关数据类型,如下所示:

<Grid.Resources> 
     <HierarchicalDataTemplate DataType="{x:Type my:FatherClass}" ItemsSource="{Binding Children}" > 
      <TreeViewItem Header="{Binding Name}" /> 
     </HierarchicalDataTemplate> 
     <HierarchicalDataTemplate DataType="{x:Type my:ChildClass}" > 
      <TreeViewItem Header="{Binding Name}" /> 

     </HierarchicalDataTemplate> 
    </Grid.Resources> 

然后,树形视图的语法应为:

<TreeView ItemsSource="{Binding }"> 

    </TreeView>