如何使用WPF从XML文件创建treeview?
发布时间:2020-12-16 23:28:53 所属栏目:百科 来源:网络整理
导读:这是 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="Pub
这是
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中创建一个树视图,看起来像 -Root --DeltaTestBaclup ---App ----Source ----Publish ---Db ----Dev ----Build 所以请帮我创建这个树视图. 解决方法
这是一种以编程方式执行此操作的方法.这是基于
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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |