在WP7中数据绑定到TextBlock

时间:2012-09-12 12:38:04

标签: linq windows-phone-7 data-binding

这是我的XML文件:

<?xml version="1.0" encoding="utf-8"?> 
    <Kids> 
      <Child> 
        <Name>Kid1</Name> 
        <FirstName>hisname</FirstName> 
      </Child> 
    <Child> 
        <Name>kid2</Name> 
        <FirstName>SomeName</FirstName> 
      </Child> 
    </Kids> 

我使用Linq to XML来读取我的xml文件。 现在我想将结果数据绑定到我的文本块中 windows phone 7应用程序。 我有一个名为SerializeKidToXml的类。在那个类中,我有一个名为ReadXML的函数,如下所示:

  public string ReadXml()
        {
            StringBuilder s = new StringBuilder();
            using (IsolatedStorageFileStream test = new IsolatedStorageFileStream("YourKids.xml", FileMode.Open, store))
            {

                var testxdoc = XDocument.Load(test);
                var returnval = from item in testxdoc.Descendants("Kids").Elements("Child")
                                select new
                                {
                                    kind = item.Element("FirstName").Value
                                };
                return s.Append(returnval).ToString();

            }
        }

现在我希望此查询的结果与所找到的文本块绑定 在XAML页面的界面上。我试图通过使用XAML页面后面的代码来绑定它。这就是我现在所拥有的:

 private void button1_Click(object sender, RoutedEventArgs e)
        {
            SerializeKidToXml t = new SerializeKidToXml();
            textBlock1.Text = t.ReadXml();

        }

XAML页面上的文本块没有显示结果字符串,而是显示: System.LINQ.Enumerable ......

任何帮助将不胜感激。 THX。

1 个答案:

答案 0 :(得分:0)

这可能会对您有所帮助:

  var returnval = from item in testxdoc.Descendants("Kids").Elements("Child")
         select item.Element("FirstName").Value;

     foreach(var str in returnval)
     { 
        s.Append(", ");
        s.Append(str);
     }
     return s.ToString();

如果您想在列表框中显示孩子:

public IEnumerable<string> ReadXml()
        {
            using (IsolatedStorageFileStream test = new      IsolatedStorageFileStream("YourKids.xml", FileMode.Open, store))
            {    
                var testxdoc = XDocument.Load(test);
                var collection = from item in testxdoc.Descendants("Kids").Elements("Child")
                                select item.Element("FirstName").Value;
                return collection;

            }
        }

并使用它:

   SerializeKidToXml t = new SerializeKidToXml();
   listBox.ItemsSource = t.ReadXml();