加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何使用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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读