Xamarin.Forms Windows App将XML数据加载到ListView中

时间:2016-10-20 06:14:05

标签: c# android xml listview xamarin.forms

我正在为Android,iOS和Windows Store编写Xamarin.Forms中的应用程序。我想用一个XML文件中的大约10,000个元素填充ListView。问题是当我运行Windows Phone或Windows Store的代码时,应用程序滞后大约一分钟才能恢复活动并填充ListView。它立即为Android和iOS填充。然而对于Windows来说,它是滞后的。有人可以帮我解决这个问题吗?这是我的代码,它读取XML并填充ListView:

public async void LoadCharacters()
    {
        Assembly assembly = typeof(CharacterPage).GetTypeInfo().Assembly;
        string file = assembly.GetManifestResourceNames().First(x => x.Contains("Characters.xml"));
        Stream stream = assembly.GetManifestResourceStream(file);

        data = new ObservableCollection<Character>();

        await Task.Factory.StartNew(delegate {

            XDocument doc = XDocument.Load(stream);

            IEnumerable<Character> characters = from query in doc.Descendants("c")
                                                select new Character
                                                {
                                                    Simplified = query.Attribute("s").Value,
                                                    Traditional = query.Attribute("t").Value,
                                                    Pinyin = query.Attribute("p").Value,
                                                    English = query.Attribute("e").Value,
                                                    URL = query.Attribute("u").Value
                                                };
            data = characters.ToObservableCollection();
        });

        characterList.ItemsSource = data;
    }

此代码可以正常运行,并且可以在iOS和Android中顺利运行。但是在Windows中,它会挂起大约1分钟。请帮忙。

谢谢

1 个答案:

答案 0 :(得分:0)

答案是设置listview项的高度。然后它立即加载。