zoukankan      html  css  js  c++  java
  • WP7的XML操作详解:读取,过滤以及数据绑定

    在这个小教程,我将演示在Windows Phone 7如何让ListBox的数据绑定XML数据。我将使用LINQ to XML,以便加载和读取数据,而且我将展示如何实现一个基本的过滤。

    首先让我们先创建一个Windows Phone 7的应用程序项目示例,并添加以下两个demo xml文件。

    people.xml

    <?xml version="1.0" encoding="utf-8" ?>
    <people>
    <person>
    <firstname>Kate</firstname>
    <lastname>Smith</lastname>
    <age>27</age>
    </person>
    <person>
    <firstname>Tom</firstname>
    <lastname>Brown</lastname>
    <age>30</age>
    </person>
    <person>
    <firstname>Tim</firstname>
    <lastname>Stone</lastname>
    <age>36</age>
    </person>
    <person>
    <firstname>Ann</firstname>
    <lastname>Peterson</lastname>
    <age>27</age>
    </person>
    </people>


    在这里我不得不感谢一直支持我的卤面网版主,是他让我提起兴趣写了这么一篇文章,再次感谢卤面网,一个非常不错的wp7开发论坛,后面我也将再次向大家发布几篇高质量文章,请大家到卤面上找我吧,呵呵

        进入正题:


    PeopleCustom.xml

    <?xml version="1.0"  ?>
    <People>
    <Person
    FirstName="Kate"
    LastName="Smith"
    Age="27" />
    <Person
    FirstName="Tom"
    LastName="Brown"
    Age="30" />
    <Person
    FirstName="Tim"
    LastName="Stone"
    Age="36" />
    <Person
    FirstName="Ann"
    LastName="Peterson"
    Age="27" />
    </People>

    下一步是创建一个示例类将被用来存储XML元素值:

    public class Person
    {
    string firstname;
    string lastname;
    int age;

    public string FirstName
    {
    get { return firstname; }
    set { firstname = value; }
    }

    public string LastName
    {
    get { return lastname; }
    set { lastname = value; }
    }

    public int Age
    {
    get { return age; }
    set { age = value; }
    }
    }

    为了读取XML文件的信息,我们将使用的XDocument

    所以你首先需要添加System.Xml.Linq.dll引用,然后using System.Xml.Linq;

    XDocument loadedData = XDocument.Load("People.xml");

    var data = from query in loadedData.Descendants("person")
    select new Person
    {
    FirstName = (string)query.Element("firstname"),
    LastName = (string)query.Element("lastname"),
    Age = (int)query.Element("age")
    };
    listBox.ItemsSource = data;

    在接下来的例子中,我们将通过数据的“年龄”属性值过滤源代码如下:

    XDocument loadedCustomData = XDocument.Load("PeopleCustom.xml");
    var filteredData = from c in loadedCustomData.Descendants("Person")
    where c.Attribute("Age").Value == "27"
    select new Person()
    {
    FirstName = c.Attribute("FirstName").Value,
    LastName = c.Attribute("LastName").Value

    };

    listBox1.ItemsSource = filteredData;

    为了显示的数据,我们将使用以下ItemTemplates绑定ListBox控件:

    <StackPanel x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0" Orientation="Horizontal">
    <TextBlock Text="XML Data:"/>
    <ListBox x:Name="listBox">
    <ListBox.ItemTemplate>
    <DataTemplate>
    <StackPanel Margin="10" >
    <TextBlock Text="{Binding FirstName}"/>
    <TextBlock Text="{Binding LastName}"/>
    <TextBlock Text="{Binding Age}"/>
    </StackPanel>
    </DataTemplate>
    </ListBox.ItemTemplate>
    </ListBox>
    <TextBlock Text="Filtered by Age 27:"/>
    <ListBox x:Name="listBox1">
    <ListBox.ItemTemplate>
    <DataTemplate>
    <StackPanel Margin="20" >
    <TextBlock Text="{Binding FirstName}"/>
    <TextBlock Text="{Binding LastName}"/>
    </StackPanel>
    </DataTemplate>
    </ListBox.ItemTemplate>
    </ListBox>
    </StackPanel>



    我希望你能喜欢我的文章!如果你有更多想法,请到卤面网 wp7开发论坛(codewp7.com)问答区联系我,我会很高兴知道你在想什么。同时wp7交流QQ群172765887中,也能找到我的身影,感谢大家

    源码请猛击







  • 相关阅读:
    vue 跳转路由传参数用法
    百度地图放大之后,多边形,矩形覆盖物消失
    百度地图画多边形,画圆, 监听事件不触发原因
    兄弟组件之间如何通信
    vue如何触发某个元素的单击事件?
    input 清空值。(转载)
    inline-block元素水平居中问题
    android 浏览器对图片加载高度渲染问题
    IE下png图片黑边问题
    IE css hack整理
  • 原文地址:https://www.cnblogs.com/sonyye/p/2379592.html
Copyright © 2011-2022 走看看