1

Windows8 で XML データをシリアル化する方法。Metro の場合、方法は非同期です。保存のために、保存操作が完了すると呼び出されるアクションを渡すことができます。データをロードするときは、ロードされたデータを受け取るアクションと、データをロードできなかった場合に入力される例外パラメーターを渡す必要があります。それはどのように可能ですか。

以下はwp7でシリアル化するためのコードです..Windows 8ではどのように可能ですか??

private void SaveProfileData(Profiles profileData)
    {
        XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
        xmlWriterSettings.Indent = true; 
        ProfileList = ReadProfileList();
        using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile("profile.xml", FileMode.Create))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(List<Profiles>));
                using (XmlWriter xmlWriter = XmlWriter.Create(stream, xmlWriterSettings))
                {
                    serializer.Serialize(xmlWriter, GenerateProfileData(profileData));
                }
            }
        }
    }
4

2 に答える 2

1

数独アプリを作成しましたが、同じ問題があります。Visual Studio 2012 でコードを wp7 から win 8 に変更しようとしましたが、アプリはまだ機能しませんでした。おそらく私のコードがあなたを助けることができます。

public void SaveToDisk()
        {           
             if (Windows.Storage.ApplicationData.Current.LocalSettings.Values.ContainsKey(key))
                {
                    if (Windows.Storage.ApplicationData.Current.LocalSettings.Values[key].ToString() != null)
                    { 
                        //do update
                        Windows.Storage.ApplicationData.Current.LocalSettings.Values[key] = value;
                    }
                }
             else 
                {   // do create key and save value, first time only.

                    Windows.Storage.ApplicationData.Current.LocalSettings.CreateContainer(key, ApplicationDataCreateDisposition.Always);
                    if (Windows.Storage.ApplicationData.Current.LocalSettings.Values[key] == null)
                    {
                        Windows.Storage.ApplicationData.Current.LocalSettings.Values[key] = value;
                    }

                 using (StreamWriter writer = new StreamWriter(stream))
                    {
                        List<SquareViewModel> s = new List<SquareViewModel>();
                        foreach (SquareViewModel item in GameArray)
                            s.Add(item);

                        XmlSerializer serializer = new XmlSerializer(s.GetType());
                        serializer.Serialize(writer, s);
                    }
                 }                

        }
于 2012-07-20T12:17:39.667 に答える