0

これは私の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......

どんな助けでも大歓迎です。どうも。

4

1 に答える 1

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();
于 2012-09-12T18:39:53.627 に答える