В соответствии с этим https://github.com/MvvmCross/MvvmCross/wiki/View-Model-Lifecycle, мы должны реализовать состояние сохранения и перезагрузки для обработки надгробия.Не перезаписывает ли метод ReloadState с Init на MvxViewModel?
Но что произойдет, если у нас есть параметр значения в методе Init?
пример:
public StockDetailViewModel
{
int stockId;
...
void Init(int stockIdAsIntent)
{
stockId = stockIdAsIntent
}
protected override void ReloadFromBundle(IMvxBundle state)
{
id = int.Parse(state.Data["id"]);
}
protected override void SaveStateToBundle(IMvxBundle bundle)
{
bundle.Data["id"] = stockId;
}
async void Start()
{
stockModel = StockService.Get(stockId);
}
...
}
Теперь говорят, что мы перейти к модели представления ребенка называется StockFormViewModel
. Вызывается метод SaveState
. Теперь мы открываем форму, сделать наш бизнес, а затем вызвать this.Close(this);
Если следовать CIRS, сначала Init
будет называться, а затем ReloadState
.
Но метод Init
не удастся, потому что мы исходим из модели детского вида, и никакое намерение не было дано в качестве аргумента, не давая возможности методу ReloadState
для запуска и восстановления запаса.
Я уверен, что я делаю что-то здесь не так, но я не могу положить палец на нем ...
Я сам этого не проверял, но, возможно, вы можете перегрузить метод Init. Значение предоставления метода Init без параметров и метода Init с вашим параметром, а затем позволяет mvx выполнять работу по выбору хорошего? – Miiite
К сожалению, я уже пробовал, но не повезло ... – Roubachof