根据VS2012的模板,修改了一个Windows apps类:SampleDataSource。大意是从XML文件读取数据, 用到了LINQ for XML,然后添加到group1.Items中。
但是代码运行完后,group1.Items总是为空,不能生成数据。好像是IEnumerable<XElement> _els没有 new的原因?对C#不是很精通,不清楚是什么原因,会不会是数据传递时出错了呢,请大家帮忙,谢谢!
附上代码如下: using Windows.Storage;
using System.Xml.Linq;
using System.IO;
        
        public sealed class SampleDataSource
        {
            private IEnumerable<XElement> _els;            public async void setgroupedItemsViewSource()
            {
                var picturesLibrary = Windows.Storage.KnownFolders.PicturesLibrary;
                Windows.Storage.StorageFile file = await picturesLibrary.GetFileAsync(@"file.xml");                XDocument doc1 = new XDocument();
                using (Stream stream = await file.OpenStreamForReadAsync())
                {
                    doc1 = XDocument.Load(stream);
                }
                var els = from el in doc1.Root.Elements()
                          select el;
                this._els = els;
            }            public SampleDataSource()
        {
            setgroupedItemsViewSource();
            foreach (XElement el in this._els)
             {
                  group1.Items.Add(new SampleDataItem((string)el.Attribute("id"));
             }            }
        }

解决方案 »

  1.   

    setgroupedItemsViewSource();调用的时候,没有await,它是异步执行的。
       foreach (XElement el in this._els) 当然没有值
      

  2.   

    谢谢fangxinggood!
    可是await应该加在哪里呢,直接改成await setgroupedItemsViewSource()没有用,是不是还得用TASK呢。
    await/async一时搞不明白,请大虾帮帮忙改一下整个代码,万分感谢!
      

  3.   


    谢谢!
     可是await应该加在哪里呢,直接改成await setgroupedItemsViewSource()没有用,是不是还得用TASK呢。
    await/async一时搞不明白,请大虾帮帮忙改一下整个代码,万分感谢! 
      

  4.   

    把你的 
    foreach (XElement el in this._els)
    {
         group1.Items.Add(new SampleDataItem((string)el.Attribute("id"));
    }
    移到 setgroupedItemsViewSource 里,其他不用动。
      

  5.   

    前两天调试通了,没有及时结贴给分,SRY