【发布时间】: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;
}
像往常一样,非常感谢任何见解:)
【问题讨论】: