2012-09-26 73 views
2

我一直在试图让一个TreeView,看起来像创建树状结合WPF

2001(根)
-Student1(节点)
-Student2(节点)

我试着使用hierarchicaldatatemplates,但我仍然没有抓住我需要的东西。这是我的代码,我正在寻找绑定我的树视图。任何与Xaml的帮助都将受到关注。

我认为它会看起来像

<TreeView ItemsSource="{Binding CurrentClass}"> 
     <TreeView.Resources> 
      <HierarchicalDataTemplate DataType="{x:Type local:Student}" ItemsSource="{Binding CurrentClass.Students}"> 
        <TextBlock Text="{Binding CurrentClass.Students/FirstName}" /> 
       </HierarchicalDataTemplate> 
     </TreeView.Resources> 
    </TreeView> 
public class ViewModel 
{ 
    public FreshmenClass currentClass = new FreshmenClass(); 

    public ViewModel() 
    { 
     currentClass.Year = "2001"; 
     currentClass.Students.Add(new Student("Student1", "LastName1")); 
     currentClass.Students.Add(new Student("Student2", "LastName2")); 
    } 

    public FreshmenClass CurrentClass 
    { 
     get { return currentClass; } 
    } 
} 

public class FreshmenClass 
{ 
    public string Year { get; set; } 
    public List<Student> students = new List<Student>(); 

    public List<Student> Students 
    { 
     get { return students; } 
     set { students = value; } 
    } 
} 

public class Student 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

    public Student(string firstName, string lastName) 
    { 
     FirstName = firstName; 
     LastName = lastName; 
    } 
} 

回答

5

看一看约Treeview和HierarchicalDataTemplate的文档。无论如何,我编辑您的例子是这样的(XAML):

<TreeView ItemsSource="{Binding CurrentClass}" > 
     <TreeView.ItemTemplate> 
      <HierarchicalDataTemplate ItemsSource="{Binding Students}"> 
       <TextBlock Text="{Binding Year}" /> 
       <HierarchicalDataTemplate.ItemTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding FirstName}"> </TextBlock> 
        </DataTemplate> 
       </HierarchicalDataTemplate.ItemTemplate> 
      </HierarchicalDataTemplate> 
     </TreeView.ItemTemplate> 
    </TreeView> 

和c#:

public class ViewModel 
{ 
    private List<FreshmenClass> currentClass; 

    public ViewModel() 
    { 
     CurrentClass = new List<FreshmenClass>(); 
     FreshmenClass temp = new FreshmenClass(); 
     temp.Year = "2001"; 
     temp.Students.Add(new Student("Student1", "LastName1")); 
     temp.Students.Add(new Student("Student2", "LastName2")); 

     CurrentClass.Add(temp); 
    } 

    public List<FreshmenClass> CurrentClass 
    { 
     get { return currentClass; } 
     set { currentClass = value; } 
    } 
} 

ItemsSource属性是一个IEnumerable。

+1

谢谢,这将帮助很多! – timmy

+1

不客气! – michele