2011-06-10 3 views
1

TreeView에서 "루트"를 표시하는 방법은 무엇입니까?TreeView에 "루트"노드 표시

루트에 대해 특별한 HierarchicalDataTemplate을 만들어야합니까?

<TreeView Margin="0,0,15,0" Name="treeView1" ItemsSource="{Binding Path=Children}">   
    <TreeView.Resources>   
    <HierarchicalDataTemplate DataType="{x:Type local:Node}" 
           ItemsSource="{Binding Path=Children}"> 
     <Border BorderBrush="Black" BorderThickness="1"> 
     <StackPanel> 
      <TextBlock Margin="10,0,0,0" Text="{Binding Data}"/> 
     </StackPanel> 
     </Border> 
    </HierarchicalDataTemplate> 
    </TreeView.Resources> 
</TreeView> 
Node node0 = new Node("Root"); 
Node node1 = new Node("Node1-1"); 
Node node12 = new Node("Node1-2"); 
Node node21 = new Node("Node2-1"); 
Node node22 = new Node("Node2-2"); 
Node node31 = new Node("Node3-1"); 
Node node9 = new Node("Node9"); 
node12.Children.Add(node21); 
node12.Children.Add(node22); 
node22.Children.Add(node31); 
node1.Children.Add(node9); 

node0.Children.Add(node1); 
node0.Children.Add(node12); 
treeView1.DataContext = node0; 

public class Node 
{  
    List<Node> children; 
    public List<Node> Children 
    { 
     get { return children; } 
     set { children = value; } 
    }  

    string data; 
    public string Data 
    { 
     get { return data; } 
     set { data = value; } 
    } 

    public Node() 
    { 
     children = new List<Node>(); 
    } 

    public Node(string data) 
     : this() 
    { 
     this.data = data; 
    } 

} 

답변

4

당신은 당신이 거기에 하나의 항목 만이있는 ItemsSource을 지정해야 루트를 원하는 경우, 루트 노드는, 그것이 IEnumerable 수있다, 노드 :

내 코드입니다 자체가 소스가 될 수 없습니다.

거기에 하나의 항목 만이있는 ItemsSource를 지정, 이해가 안

<TreeView ItemsSource="{Binding Path=RootNode,Converter={StaticResource rootConv}}" /> 
+0

: XAML에서

public class RootTreeviewConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value == null) return null; return new object[] { value }; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } } 

:

treeView.ItemsSource = new [] { rootNode }; 
anderi

+1

다음과 같을 것 :'treeView.ItemsSource = new List () {rootNode};' –

3

는 변환기를 사용?
관련 문제