私はまだ自分のプロジェクトと戦っていますが、前進するための助けはほとんど必要ありません。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 のこのメソッドを使用して、これらのデータを編集しています。
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 に戻ると変更が表示されませんが、Commandをバインドするボタンによって呼び出されるRefreshメソッドを押すと、変更後のデータが読み込まれ、すべて問題ありません。データを適切にバインドするために MainViewModel に戻った後に Refresh を押さないようにするにはどうすればよいですか?