gpt4 book ai didi

wpf - 如何使用 WPF 从 XML 文件创建 TreeView ?

转载 作者:行者123 更新时间:2023-12-02 15:20:48 25 4
gpt4 key购买 nike

这是 XML 文件

 <Root>
<RootNode name="CurrentDbName" value="DeltaTest Backup" DesiPath="E:\BuildBackups">
<ChildNode name="Application" value="App">
<LeafNode name="Source" value="Source" SourcePath="E:\Alertv2" />
<LeafNode name="Publish" value="Publish" SourcePath="C:\Alert_Source" />
</ChildNode>
<ChildNode name="Database" value="DB">
<LeafNode name="Dev" value="Dev" SourcePath="C:\Kiran3" />
<LeafNode name="Build" value="Build" SourcePath="C:\Kiran4" />
</ChildNode>
</RootNode> </Root>

由此,我想在 WPF 中创建一个 TreeView ,看起来像

-Root
--DeltaTestBaclup
---App
----Source
----Publish
---Db
----Dev
----Build

所以请帮我创建这个 TreeView 。

最佳答案

这是一种以编程方式执行此操作的方法。这是基于this website's solution

public YourWindow()
{
InitializeComponent();
BuildTree(treeView, XDocument.Load(System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), @"testxml.xml")));
}

private void BuildTree(TreeView treeView, XDocument doc)
{
TreeViewItem treeNode = new TreeViewItem
{
//Should be Root
Header = doc.Root.Name.LocalName,
IsExpanded = true
};
treeView.Items.Add(treeNode);
BuildNodes(treeNode, doc.Root);
}

private void BuildNodes(TreeViewItem treeNode, XElement element)
{
foreach (XNode child in element.Nodes())
{
switch (child.NodeType)
{
case XmlNodeType.Element:
XElement childElement = child as XElement;
TreeViewItem childTreeNode = new TreeViewItem
{
//Get First attribute where it is equal to value
Header = childElement.Attributes().First(s => s.Name == "value").Value ,
//Automatically expand elements
IsExpanded = true
};
treeNode.Items.Add(childTreeNode);
BuildNodes(childTreeNode, childElement);
break;
case XmlNodeType.Text:
XText childText = child as XText;
treeNode.Items.Add(new TreeViewItem { Header = childText.Value, });
break;
}
}
}

后面的代码将根据您的规范构建树。这是 XAML

<Grid>
<TreeView Margin="20" Background="LightGray" x:Name="treeView" />
</Grid>

关于wpf - 如何使用 WPF 从 XML 文件创建 TreeView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2294882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com