Я загрузил несколько json с веб-клиентом и сохранил его в изолированном хранилище после десериализации в виде строк. поэтому они теперь сохраняются, и я показываю их при запуске приложения, потому что веб-клиент загружает их, поэтому после загрузки они все еще существуют, как я могу обновить их новыми загруженными данными и не прерывать их, чтобы не мигать.сохранение строк в изолированном хранилище и после загрузки новых, обновляющих старые
у меня есть этот код:
IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
if (!settings.Contains("temp"))
{
settings.Add("temp", tempTextBlock.Text.ToString());
}
else
{
settings["temp"] = tempTextBlock.Text.ToString();
}
, чтобы сохранить температуру в ISO. я использую их в «OnNavigatedTo», поэтому я вижу их, когда приложение запускается, но они остаются там даже после загрузки данных в фоновом режиме. что я могу сделать, чтобы просто обновить эту строку, которую я сохранил с новыми загруженными данными? есть ли способ сравнить данные, а затем отобразить только новый?
вот код:
public MainViewModel()
{
if (IsInDesignMode)
{
DayList = new ObservableCollection<List>();
DayList.Add(new List { Time = DateTime.Now, weather = new System.Collections.Generic.List<Weather> { new Weather { icon = "01d", description = "sunćano" } }, main = new Main {temp = 8 } });
DayList.Add(new List { Time = DateTime.Now.AddHours(1), weather = new System.Collections.Generic.List<Weather> { new Weather { icon = "01d", description = "sunćano" } }, main = new Main { temp = 10 } });
DayList.Add(new List { Time = DateTime.Now.AddHours(2), weather = new System.Collections.Generic.List<Weather> { new Weather { icon = "01d", description = "sunćano" } }, main = new Main { temp = 6 } });
CurrentDay = DayList[0];
}
else
{
if (IsolatedStorageSettings.ApplicationSettings.Contains("temp"))
{
здесь я хочу, чтобы проверить, если сохраненная строка новее или номер отличается, то новый один downlaoded прямо сейчас. проблема в том, что этот код здесь сохраняется после того, как позже загрузится anddont с другой загрузкой. из-за отсутствия сравнения :( } еще { }
}
}
и я использовал его в качестве завершения загрузки, чтобы показать данные на MainPage ...
void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
RootObject json = JsonConvert.DeserializeObject<RootObject>(e.Result);
DayList = new ObservableCollection<List>(json.list);
CurrentDay = DayList[0];
}
else
{
MessageBox.Show("error");
}
}
Да, я хочу сохранить его на одном и том же ключе, чтобы он работал каждый раз, как далеко в будущем. Я сохраняю этот ключ, когда он загружен, поэтому он находится в текстовом блоке с именем tempTextBlock. Я запускаю этот метод выше, когда этот текстовый блок является обработчиком событий LayoutUpdated. и я хочу сравнить их в первых строках кода, так что это в mvvm MainViewModel.cs есть мир, если его (IsInDesignMode) я использую else {}, но как сравнить два ?! любой пример, как это сделать? и другая проблема заключается в том, как установить более новый, который будет отображаться после этого сравнения? – dinchy87
@ dinchy87 Я хочу увидеть код – techloverr
, поэтому я добавил код выше, вы можете увидеть метод, который вызывается прямо при запуске приложения, это общедоступный MainViewModel() {...} , а код под ним показывает methos по мере того, как загрузка завершается, тогда она отображается на MainPage, там в коде позади я сохраняю его, как первый фрагмент кода. и если приложение открывается во второй раз, оно должно отображать эти строки, которые я сохранил, а затем после того, как загрузка просто исчезнет в новых загруженных данных, чтобы не прерывать данные на главной странице заметно. прямо сейчас проблема в том, что я открываю приложение, и я ничего не вижу перед загрузкой. – dinchy87