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> 

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

  • 相关阅读:
    UVa 1354 天平难题 (枚举二叉树)
    广西邀请赛总结
    UVa 12118 检查员的难题 (dfs判连通, 构造欧拉通路)
    UVA
    Uva 127 "Accordian" Patience (模拟)
    UVA 10539 Almost Prime Numbers( 素数因子)
    HDU 1272 小希的迷宫(并查集)
    HDU 1213 How Many Tables (并查集)
    POJ 2236 Wireless Network(并查集)
    HDU 1233 还是畅通工程 ( Kruskal或Prim)
  • 原文地址:https://www.cnblogs.com/TianFang/p/1669078.html
Copyright © 2011-2022 走看看