Przenoszenie aplikacji z WP8 wykorzystującej System.IO.IsolatedStorage na W8

0

Hej,

Mam appke na WP8, przenoszę ją na W8, działa niemal wszystko, ale mam problem z zapisywaniem i odczytywaniem danych które na WP8 było robione z wykorzystaniem System.IO.IsolatedStorage, nie wiem jak zrobić to na W8.

Wykorzystuję następujące opcje:

 
IsolatedStorageSettings Iss = IsolatedStorageSettings.ApplicationSettings;
Iss.Contains(key);
Iss.Add(key, value);
Iss.Save()
Iss[key]

Da się to jakoś łatwo przenieść na Windows 8?

1

Obejrzyj Windows.Storage.ApplicationData.Current.LocalSettings. Odwołujesz się do Values bezpośrednio, albo wewnątrz tego tworzysz sobie swój kontener i zawiera zarówno ContainsKey, Add, jak i odwołanie przez indeksator. Nie ma Save(), bo to jest robione automatycznie z tego co pamiętam.

http://msdn.microsoft.com/en-US/library/windows/apps/windows.storage.applicationdata.localsettings.aspx

A ktoś to nawet jeszcze opakował:
http://blog.roguecode.co.za/Post/IsolatedStorageSettingswrapperforWindows8

0

A jak w tym zapisać obiekt? bo widzę że tylko podstawowe typy danych się da

0

Zserializuj do XML-a albo JSON-a i zapisz jako string. Ja osobiście żeby zapisać m.in. ObservableCollection mojej klasy (co prawda do RoamingSettings, ale żadna różnica) używam czegoś takiego:

public static string Serialize(object obj)
        {
            using (MemoryStream memoryStream = new MemoryStream())
            using (StreamReader reader = new StreamReader(memoryStream))
            {
                DataContractSerializer serializer = new DataContractSerializer(obj.GetType());
                serializer.WriteObject(memoryStream, obj);
                memoryStream.Position = 0;
                return reader.ReadToEnd();
            }
        }

        public static object Deserialize(string xml, Type toType)
        {
            using (Stream stream = new MemoryStream())
            {
                byte[] data = System.Text.Encoding.UTF8.GetBytes(xml);
                stream.Write(data, 0, data.Length);
                stream.Position = 0;
                DataContractSerializer deserializer = new DataContractSerializer(toType);
                return deserializer.ReadObject(stream);
            }
        }

Alternatywnie, obejrzyj http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.applicationdatacompositevalue.aspx

1 użytkowników online, w tym zalogowanych: 0, gości: 1