TreeView, HierarchicalDataTemplate and recursive Data

前端 未结 2 754
你的背包
你的背包 2020-12-03 05:23

For my treeview I have two different classes that provide the ItemsSource.

public class TreeViewModel : ViewModelBase
{
    public ObservableCollection

        
2条回答
  •  -上瘾入骨i
    2020-12-03 06:15

    You should only have to declare the HierarchicalDataTemplate for NodeViewModel as this is the only thing showing in the TreeView, and bind the actual ItemSource to the TreeView

    
        
            
                
            
        
    
    

    Full Example

    Xaml:

    
    
        
            
                
                    
                
            
        
    
    
    

    Code:

    public partial class MainWindow : Window
    {
    
        public MainWindow()
        {
            InitializeComponent();
        }
    
        public TreeViewModel TreeModel
        {
            get
            {
                return new TreeViewModel
                {
                    Items = new ObservableCollection{
                               new NodeViewModel { Name = "Root", Children =  new ObservableCollection {
                                  new NodeViewModel { Name = "Level1" ,  Children = new ObservableCollection{ 
                                      new NodeViewModel{ Name = "Level2"}}} } }}
                };
            }
        }
    }
    
    public class TreeViewModel
    {
        public ObservableCollection Items { get; set; }
    }
    
    public class NodeViewModel
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public ObservableCollection Children { get; set; }
    }
    

    Result:

    enter image description here

提交回复
热议问题