Заголовок охватывает его. Я должен просто делать что-то неправильно, но каждый пример, который я видел до сих пор, не добавляет элементы по-разному, насколько я могу судить. Исключение составляетДобавление TreeViewItems в TreeView в WPF приводит к исключению
«InvalidOperationException»
с сообщением
«Элемент уже есть логический родительский элемент. Он должен быть отделен от старого родителя, прежде чем он присоединен к новому.»
Я использую два TreeViews, один для отображения содержимого исходной папки, и один для отображения содержимого папки назначения. До сих пор кажется, что генерация 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;
}
Как всегда, любое понимание очень ценится :)