Я все еще сражаюсь с моим проектом, и мне не нужна помощь, чтобы двигаться. В MainViewModel Я вызываю метод Refresh для привязки данных из XML к ObservableCollection.Привязать данные от асинхронного метода
private async Task Refresh()
{
var listOfBadges = (await _badgeService.GetAll());
var listOfSets = (await _setService.GetAll());
BadgesList.Clear();
SetsList.Clear();
BadgesList = listOfBadges.ToObservableCollection<Badge>();
SetsList = listOfSets.ToObservableCollection<Set>();
}
Это нормально;) В QuestionViewModel я редактирую эти данные с помощью этого метода из BadgeService, который реализует Repository Pattern.
public async Task Update(int id)
{
StorageFolder sf = await ApplicationData.Current.LocalFolder.GetFolderAsync("Data");
StorageFile st = await sf.GetFileAsync("Badgess.xml");
var xmlStream = await FileIO.ReadTextAsync(st);
XmlDocument xmlDoc = await XmlDocument.LoadFromFileAsync(st);
using (var stream = await st.OpenAsync(FileAccessMode.ReadWrite))
{
XmlElement root = xmlDoc.DocumentElement;
IXmlNode xee = root.SelectSingleNode("//badge/id[.='" + id + "']");
xee.NextSibling.NextSibling.NextSibling.InnerText = "true";
}
var xmlStreamUp = xmlDoc.GetXml();
if (xmlDoc != null)
await xmlDoc.SaveToFileAsync(st);
}
данные изменения, но когда я возвращаюсь к MainViewModel я не в состоянии видеть изменения после связывания, но когда я ударил Refresh метод вызывается кнопкой, которые связывают Command, данные после изменения будут загружены и все в порядке. Как избежать удара Обновить после возврата в MainViewModel для правильной привязки данных?
HTTP: // stackoverflow.com/questions/11176349/assigning-an-async-result-to-a-data-binding-property аналогичен –
Мне нужно задаться вопросом, почему вы вручную манипулируете xml и не используете объект и периодически сохраняете его в xml-файл. Является ли xml действующим как какая-то база данных? – Romoku
@Romoku Да, это своего рода база данных, я использую XmlDocument, потому что узнаю, что это хорошая практика в приложениях Windows Store, я не нашел пример Linq2XML в приложениях Windows Store. –