Search code examples
c#wpfwinformstreeview

TreeView directories in C# WPF


I have this code in C# Windows Form Application, but I need it in WPF. Do you have any ideas?

private void button1_Click(object sender, EventArgs e)
{
    ListDirectory(treeView1, "C:\\Users\\Patrik\\Pictures");
}

private void ListDirectory(TreeView treeView, string path)
{
    treeView.Nodes.Clear();
    var rootDirectoryInfo = new DirectoryInfo(path);
    treeView.Nodes.Add(CreateDirectoryNode(rootDirectoryInfo));
}

private static TreeNode CreateDirectoryNode(DirectoryInfo directoryInfo)
{
    var directoryNode = new TreeNode(directoryInfo.Name);
    foreach (var directory in directoryInfo.GetDirectories())
    directoryNode.Nodes.Add(CreateDirectoryNode(directory));

    foreach (var file in directoryInfo.GetFiles())
        directoryNode.Nodes.Add(new TreeNode(file.Name));

    return directoryNode;       
}

Thanks for help.


Solution

  • In WPF instead of Nodes property is Items property and instead of TreeNode you should use TreeViewItem (msdn).

       private void ListDirectory(TreeView treeView, string path)
        {
            treeView.Items.Clear();
            var rootDirectoryInfo = new DirectoryInfo(path);
            treeView.Items.Add(CreateDirectoryNode(rootDirectoryInfo));
        }
    
        private static TreeViewItem CreateDirectoryNode(DirectoryInfo directoryInfo)
        {
            var directoryNode = new TreeViewItem { Header = directoryInfo.Name };
            foreach (var directory in directoryInfo.GetDirectories())
                directoryNode.Items.Add(CreateDirectoryNode(directory));
    
            foreach (var file in directoryInfo.GetFiles())
                directoryNode.Items.Add(new TreeViewItem { Header = file.Name });
    
            return directoryNode;
    
        }