- FreshMVVM 3.0.0
- Xamarin Forms 4.2
Несколько наших входных страниц загружаются модально, и когда пользователь нажимает Сохранить, мы выполняем Command
как this
var newTemperature = new Temperature()
{
Date = DateTime.Now,
Value = this.TemperatureValue,
CaptureType = CaptureType.Manual,
IsModified = true,
};
await this.Services.DataService.SaveAsync(newTemperature);
// Save completed, now close modal.
await this.CoreMethods.PopPageModel(data, modal, animate);
Если вы посмотрите на вызов CoreMethods.PopPageModel
в GitHub , вы увидите, что он имеет дело с двумя процессами
- Повышение сигнала PageWasPopped
- Вызов службы навигации для извлечения страницы из стека навигации
Код FreshMVVM
, который обрабатывает извлекаемую страницу, находится в FreshPageModel . Помимо прочего, код отсоединяется от событий «Появление» и «Исчезновение» и устанавливает BindingContext в значение null . Как вы можете видеть из приведенного выше порядка, это означает, что BindingContext
на View
устанавливается равным нулю, прежде чем он выталкивается из стека.
Проблема в том, что в течение короткого промежутка времени от 0,5 до 1,5 секунд пользователь видит View
, который выглядит так, как будто все данные были сброшены. Это может быть весьма неприятно, если они только что нажали кнопку Сохранить.
Если я переверну порядок логики c в PopPageModel
и выскользну из стека навигации перед вызовом RaisePageWasPopped
, эта проблема исчезнет.
Никто еще не сталкивался с этой проблемой раньше?
Есть ли пользователи FreshMVVM
, которые хотят указать на ошибку предложенного мной подхода?