C# WPF 中的 TreeView 目录

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/21954669/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-13 10:59:02  来源:igfitidea点击:

TreeView directories in C# WPF

c#wpfwinformstreeview

提问by user3271748

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

我在 C# Windows 窗体应用程序中有此代码,但我在 WPF 中需要它。你有什么想法?

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.

感谢帮助。

回答by kmatyaszek

In WPF instead of Nodesproperty is Itemsproperty and instead of TreeNodeyou should use TreeViewItem(msdn).

在 WPF 中而不是Nodes属性是Items属性,而不是TreeNode你应该使用TreeViewItemmsdn)。

   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;

    }