数据绑定(六)使用XML数据作为Binding的Source-阿里云开发者社区

开发者社区> 杰克.陈> 正文

数据绑定(六)使用XML数据作为Binding的Source

简介: 原文:数据绑定(六)使用XML数据作为Binding的Source .NET Framework提供了两套处理XML数据的类库 1.
+关注继续查看
原文:数据绑定(六)使用XML数据作为Binding的Source

.NET Framework提供了两套处理XML数据的类库

1. 符合DOM标准的类库:包括XmlDocument、XmlElement、XmlNode、XmlAttribute等类,这套类库的特定是中规中矩、功能强大,但也背负了太多XML的传统和复杂

2. 已LINQ为基础的类库:包括XDocument、XElement、XNode、XAttribute等类,这套类库的特点是可以使用LINQ进行查询和操作,方便快捷

xml文件内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<StudentList>
  <Student id="1">
    <Name>Tim</Name>
  </Student>
  <Student id="2">
    <Name>Tom</Name>
  </Student>
  <Student id="3">
    <Name>Vina</Name>
  </Student>
  <Student id="4">
    <Name>Emily</Name>
  </Student>
</StudentList>

界面代码如下:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApplication1"
        Title="MainWindow" Height="244" Width="412">
    <StackPanel Background="LightBlue">
        <ListView x:Name="listViewStudents" Height="130" Margin="5">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Id" Width="80" DisplayMemberBinding="{Binding XPath=@id}" />
                    <GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding XPath=Name}" />
                </GridView>
            </ListView.View>
        </ListView>
        <Button Content="Load" Click="Button_Click" Height="25" Margin="5, 0" />
    </StackPanel>
</Window>

其中,两列分别绑定到XPath上

按钮的点击处理代码如下:

            XmlDocument doc = new XmlDocument();
            doc.Load("Students.xml");

            XmlDataProvider xdp = new XmlDataProvider();
            xdp.Document = doc;
            xdp.XPath = @"/StudentList/Student";

            listViewStudents.DataContext = xdp;
            listViewStudents.SetBinding(ListView.ItemsSourceProperty, new Binding());

代码定义了一个XmlDataProvider对象,使用XmlDataProvider对象读取一个xml文件,可以通过load方法加载一个xml,也可以通过对它的Source属性赋一个Uri来加载一个网络上的xml,例如:

xdp.Source = new Uri(@"d:\Students.xml")
XmlDataProvider对象的XPath属性通过一个XPath指定了所有目标元素的路径

运行效果如图:


xml数据可以作为线性数据的数据源,也可以用于展现树形数据结构,界面代码如下:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApplication1"
        Title="MainWindow" Height="244" Width="412">
    <Window.Resources>
        <XmlDataProvider x:Key="xdp" XPath="FileSystem/Folder">
            <x:XData>
                <FileSystem xmlns="">
                    <Folder Name="Books">
                        <Folder Name="Programming">
                            <Folder Name="Windows">
                                <Folder Name="WPF" />
                                <Folder Name="MFC" />
                                <Folder Name="Delphi" />
                            </Folder>
                        </Folder>
                        <Folder Name="Tools">
                            <Folder Name="Development" />
                            <Folder Name="Designment" />
                            <Folder Name="Players" />
                        </Folder>
                    </Folder>
                </FileSystem>
            </x:XData>
        </XmlDataProvider>
    </Window.Resources>
    <Grid>
        <TreeView ItemsSource="{Binding Source={StaticResource ResourceKey=xdp}}">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding XPath=Folder}">
                    <TextBlock Text="{Binding XPath=@Name}" />
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>
    </Grid>
</Window>

运行效果如图:



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
linux->windows主动推送文件同步目录数据 linux-windows数据目录同步
1 .windows下安装openssh for windows工具,下载地址 https://www.mls-software.com/opensshd.html 2.修改openssh安装目录下etc/sshd_config 3.
852 0
Windows常用的监视数据指标
技术改变世界! --狂诗绝剑
486 0
git使用第一天,新建分支(sourceTree)
新建分支 1、打开git [图片上传中。。。(1)] 2.点击 git工作流 [图片上传中。。。(2)] 3.选择其他操作——建立功能 [图片上传中。
792 0
LINQ 从数据库读数据生成 XML
本实例是一个从数据库里读出来省份,城市,地区的数据生成3个XML文件. 首先创建一个Linq to SQL的类, 然后将省份,城市,地区的表拖入类中: 然后新建一个类,加入代码如下:         public void ResetProvinces(string path)       ...
598 0
WPF入门:数据绑定
原文:WPF入门:数据绑定 上一篇我们将XAML大概做了个了解 ,这篇将继续学习WPF数据绑定的相关内容 数据源与控件的Binding Binding作为数据传送UI的通道,通过INotityPropertyChanged接口的PropertyChanged事件通知Binding数据属性...
846 0
Android使用SAX解析xml
一、理论准备     SAX采用事件驱动机制来解析XML文档,每当SAX解析器发现文档开始、元素开始、文本、元素结束、文档结束等事件时,就会向外发送一次事件,而开发者则可以通过编写事件监听器处理这些事件,以此来获取XML文档里的信息。
722 0
+关注
杰克.陈
一个安静的程序猿~
9798
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载