• 绑定任意格式的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> 

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

  • 相关阅读:
    使用jackson解析JSON数据
    ANT配置
    Android Webview 与JS交互
    使用ANT将Android打包成Jar包
    单例模式
    工厂模式
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 错误解决
    项目开发中的文档管理结构模板
    高并发的成熟解决方案
    Yaf(Yet Another Framework)用户手册 yii框架手册
  • 原文地址:https://www.cnblogs.com/TianFang/p/1669078.html
Copyright © 2020-2023  润新知