Пример #1
0
        protected void RunViewModelLifecycle <TParameter>(
            IMvxViewModel <TParameter> viewModel,
            TParameter param,
            IMvxBundle?parameterValues,
            IMvxBundle?savedState,
            IMvxNavigateEventArgs?navigationArgs)
            where TParameter : notnull
        {
            if (viewModel == null)
            {
                throw new ArgumentNullException(nameof(viewModel));
            }

            try
            {
                CallCustomInitMethods(viewModel, parameterValues);
                if (navigationArgs?.Cancel == true)
                {
                    return;
                }
                if (savedState != null)
                {
                    CallReloadStateMethods(viewModel, savedState);
                    if (navigationArgs?.Cancel == true)
                    {
                        return;
                    }
                }
                viewModel.Start();
                if (navigationArgs?.Cancel == true)
                {
                    return;
                }

                viewModel.Prepare();
                if (navigationArgs?.Cancel == true)
                {
                    return;
                }

                viewModel.Prepare(param);
                if (navigationArgs?.Cancel == true)
                {
                    return;
                }

                viewModel.InitializeTask = MvxNotifyTask.Create(() => viewModel.Initialize());
            }
            catch (Exception exception)
            {
                throw exception.MvxWrap("Problem running viewModel lifecycle of type {0}", viewModel.GetType().Name);
            }
        }
        protected void RunViewModelLifecycle(IMvxViewModel viewModel, IMvxBundle parameterValues, IMvxBundle savedState)
        {
            try
            {
                CallCustomInitMethods(viewModel, parameterValues);
                if (savedState != null)
                {
                    CallReloadStateMethods(viewModel, savedState);
                }
                viewModel.Start();

                viewModel.Prepare();

                viewModel.InitializeTask = MvxNotifyTask.Create(() => viewModel.Initialize());
            }
            catch (Exception exception)
            {
                throw exception.MvxWrap("Problem running viewModel lifecycle of type {0}", viewModel.GetType().Name);
            }
        }