zoukankan      html  css  js  c++  java
  • 绑定任意格式的XML文档到WPF的TreeView

    在WPF中,如果我们已经知道某XML的格式,将其数据通过数据绑定在TreeView中呈现出来是非常简单的。通过Xpath和HierarchicalDataTemplate很容易实现。

    但是,有时我们还需要将一个未知格式的xml文件绑定到TreeView。其实IE及那些XML工具都有这种功能:任意打开一个xml文件,都能以树型的格式的显示。

    这种就是一种通用型的XML格式绑定了,由于XML格式未知,无法根据XPATH来生成模板,往往有点无从下手的感觉。这里给出了一个简单的示例:  

    代码
    <HierarchicalDataTemplate x:Key="NodeTemplate">
    <TextBlock x:Name="text" Text="?" />
    <HierarchicalDataTemplate.ItemsSource>
    <Binding XPath="child::node()" />
    </HierarchicalDataTemplate.ItemsSource>
    <HierarchicalDataTemplate.Triggers>
    <DataTrigger Binding="{Binding Path=NodeType}" Value="Text">
    <Setter TargetName="text" Property="Text" Value="{Binding Path=Value}"></Setter>
    </DataTrigger>
    <DataTrigger Binding="{Binding Path=NodeType}" Value="Element">
    <Setter TargetName="text" Property="Text" Value="{Binding Path=Name}"></Setter>
    </DataTrigger>
    </HierarchicalDataTemplate.Triggers>
    </HierarchicalDataTemplate>
    <XmlDataProvider x:Key="xmlDataProvider">
    <x:XData>
    <Root xmlns="">
    <note>
    <to>George</to>
    <from>John</from>
    <heading>Reminder</heading>
    <body>Don't forget the meeting!</body>
    </note>
    </Root>
    </x:XData>
    </XmlDataProvider>
    </Window.Resources>
    <Grid >
    <TreeView Name="treeView1" 
    Background
    ="AliceBlue" 
    ItemsSource
    ="{Binding Source={StaticResource xmlDataProvider}, XPath=*}" 
    ItemTemplate
    = "{StaticResource NodeTemplate}"/>
    </Grid> 

     这个例子比较简单,基本上看着就知道是怎么回事了。当然,其也只实现了最基本的信息的显示,在这里只是抛砖引玉,要实现更详细的信息显示还得进一步完善。

  • 相关阅读:
    学习Python中的集合
    ubuntu14.04下 安装matlabR2015b遇到的一些问题及其解决方法
    matlab的一些关于块分类的函数~~~
    20145207 《Java程序设计》第二周学习总结
    20145207 调查问卷
    20145207 《Java程序设计》第一周学习总结
    10、装饰者模式
    9、观察者模式
    8、迭代器模式
    7、适配器模式
  • 原文地址:https://www.cnblogs.com/TianFang/p/1669078.html
Copyright © 2011-2022 走看看