我正在为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分钟。请帮忙。
谢谢
答案 0 :(得分:0)
答案是设置listview项的高度。然后它立即加载。