2011-04-04 95 views
0

我有類型的字段列表可以代表一個層次:列表MyFieldsWPF - 創建樹視圖

public class Field 
{ 
    public Field(string name, string value) 
    { 
     this.Name = name; 
     this.Value = value; 
    } 

    public string Name { get; set; } 
    public string Value { get; set; } 
    public IList<Field> SubFields { get; set; } 
} 

我怎麼能結合MyFields到一個TreeView?

編輯: 我忘了,我想例如。單擊該項目時在消息框中顯示該值。

+0

可能的重複[在WPF中構建treeview](http://stackoverflow.com/questions/1473566/build-a-treeview-in-wpf) – Jon 2011-04-04 11:37:11

回答

2

將TreeViews ItemsSource設置爲您想要綁定的屬性。

0

您可以創建一個HierarchicalDataTemplate,它應該放置在您的TreeView的資源中或更高級別上,請確保將DataType設置爲您的類以使其適用。

事情是這樣的,例如:

<HierarchicalDataTemplate DataType="{x:Type data:Field}" 
          ItemsSource="{Binding SubFields}"> 
    <ContentControl MouseDoubleClick="TreeViewItem_MouseDoubleClick"> 
     <TextBlock Text="{Binding Name}"/> 
    </ContentControl> 
</HierarchicalDataTemplate> 
private void TreeViewItem_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
{ 
    Field field = (sender as FrameworkElement).DataContext as Field; 
    MessageBox.Show(field.Value.ToString()); 
} 

您還需要一個根元素列出來,你可以綁定TreeView控件本身的ItemsSource