Я знаю, что этот вопрос был задан несколько месяцев назад, но я не думаю, что на него был дан точный ответ, поскольку я столкнулся с той же проблемой, и ни одно из этих предложений не помогло мне решить ее.
Вот ссылка, которая объясняет, как заполнить древовидную структуру из .xml, используя winforms:
http://www.codeproject.com/Articles/12606/Loading-and-Saving-XML-to-and-from-a-TreeView-Cont
Мне удалось адаптировать его к wpf, чтобы заполнить TreeView, используя информацию в .xml:
//First, we'll load the Xml document
XmlDocument xDoc = new XmlDocument();
xDoc.Load(filename);
//Now, clear out the treeview,
treeView.Items.Clear();
//and add the first (root) node
TreeViewItem treeviewItemRoot = new TreeViewItem();
treeviewItemRoot.Header = "Root";
treeView.Items.Add(treeviewItemRoot);
TreeViewItem tNode = new TreeViewItem();
tNode = (TreeViewItem)treeView.Items[0];
//We make a call to addTreeNode,
//where we'll add all of our nodes
addTreeNode(xDoc.DocumentElement, tNode);
//This function is called recursively until all nodes are loaded
private void addTreeNode(XmlNode xmlNode, TreeViewItem treeNode)
{
XmlNode xNode;
TreeViewItem tNode;
XmlNodeList xNodeList;
if (xmlNode.HasChildNodes) //The current node has children
{
xNodeList = xmlNode.ChildNodes;
for (int x = 0; x <= xNodeList.Count - 1; x++)
//Loop through the child nodes
{
xNode = xmlNode.ChildNodes[x];
treeNode.Items.Add(new TreeViewItem());
tNode = treeNode.Items[x] as TreeViewItem;
addTreeNode(xNode, tNode);
}
}
else //No children, so add the outer xml (trimming off whitespace)
treeNode.Header = xmlNode.OuterXml.Trim();
}