在我的 app.xaml.cs 中,我正在使用以下代码创建 XML:
private async static void CreateXML()
{
StorageFolder sf = await ApplicationData.Current.LocalFolder.CreateFolderAsync("Data", CreationCollisionOption.OpenIfExists);
StorageFile st = await sf.CreateFileAsync("Badgess.xml", CreationCollisionOption.OpenIfExists);
XmlDocument dom = new XmlDocument();
XmlElement x;
x = dom.CreateElement("badges");
dom.AppendChild(x);
XmlElement x1 = dom.CreateElement("badge");
XmlElement x11 = dom.CreateElement("id");
x11.InnerText = "1";
x1.AppendChild(x11);
XmlElement x12 = dom.CreateElement("name");
x12.InnerText = "Badge One";
x1.AppendChild(x12);
XmlElement x13 = dom.CreateElement("pictureurl");
x13.InnerText = "two.png";
x1.AppendChild(x13);
XmlElement x14 = dom.CreateElement("isachieved");
x14.InnerText = "false";
x1.AppendChild(x14);
x.AppendChild(x1);
await dom.SaveToFileAsync(st);
}
当应用程序启动时,我看不到这些数据,我正在使用存储库模式并将对象绑定到 observableList,如下所示:
public async Task<IList<Badge>> GetAll()
{
StorageFolder sf = await ApplicationData.Current.LocalFolder.GetFolderAsync("Data");
StorageFile st = await sf.GetFileAsync("Badgess.xml");
XDocument doc = XDocument.Parse(await FileIO.ReadTextAsync(st));
var data = from query in doc.Descendants("badge")
select new Badge
{
Id = (int)query.Element("id"),
Name = (string)query.Element("name"),
PictureURL = (string)query.Element("pictureurl"),
IsAchieved = (bool)query.Element("isachieved"),
};
return (IList<Badge>)data.ToList();
}
捆绑:
IList<Badge> list = await _badgeService.GetAll();
BadgesList = list.ToObservableCollection<Badge>();
只有当我转到应用程序的另一个视图然后返回主视图时才会出现,应用程序启动后它不会出现,我不知道为什么?如果有人可以帮助我,那就太好了,因为我为此奋斗了 2 天并且不知道,该项目托管在GitHub 上,因此如果需要,可以查看。