【问题标题】:Adding TreeViewItems to a TreeView in WPF results in an Exception在 WPF 中将 TreeViewItems 添加到 TreeView 会导致异常
【发布时间】:2012-02-08 16:18:25
【问题描述】:

标题涵盖了它。我一定只是做错了什么,但据我所知,到目前为止我看到的每个示例都没有添加任何不同的项目。例外是

“InvalidOperationException”

与消息

“元素已经有一个逻辑父级。它必须先与旧父级分离,然后才能附加到新父级。”

我正在使用两个 TreeView,一个显示源文件夹的内容,一个显示目标文件夹的内容。到目前为止,似乎 TreeViewItem 生成工作正常,但将其添加到 TreeView 会导致异常。代码如下:

public InstallerWindow(string sourcePath, string destPath, List<InstallInstruction> instructions)
{
    InitializeComponent();

    TreeViewItem sourceItem = GenerateTreeView(new TreeViewItem(), sourcePath);
    foreach (TreeViewItem item in sourceItem.Items)
    {
        SourceTree.Items.Add(item);
    }

    TreeViewItem destItem = GenerateTreeView(new TreeViewItem(), destPath);
    foreach (TreeViewItem item in destItem.Items)
    {
        DestTree.Items.Add(item);
    }
}

public TreeViewItem GenerateTreeView(TreeViewItem parent, string directory)
{
    string[] directories = Directory.GetDirectories(directory);
    string[] files = Directory.GetFiles(directory);

    foreach (string file in files)
    {
        TreeViewItem newItem = new TreeViewItem();
        newItem.Header = System.IO.Path.GetFileName(file);
        parent.Items.Add(newItem);
    }

    foreach (string folder in directories)
    {
        TreeViewItem newItem = new TreeViewItem();
        newItem.Header = System.IO.Path.GetFileName(folder);
        newItem = GenerateTreeView(newItem, folder);
        parent.Items.Add(newItem);
    }

    return parent;
}

像往常一样,非常感谢任何见解:)

【问题讨论】:

    标签: c# .net wpf treeview


    【解决方案1】:

    GenerateTreeView 中,您将一些项目添加到parent TreeViewItem。之后,在 InstallerWindow 构造函数中迭代这些项目并将它们添加到另一个 TreeView,例如SourceTree。这是行不通的,因为项目只能包含在一个 TreeView 中。

    你可能打算这样做吗?

    public InstallerWindow(string sourcePath, string destPath, List<InstallInstruction> instructions) 
    { 
        InitializeComponent(); 
    
        GenerateTreeView(SourceTree.Items, sourcePath));
        GenerateTreeView(DestTree.Items, destPath));
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-07
      • 2011-02-10
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多