Example #1
0
        protected virtual void PreserveViewModel([NotNull] IViewModel viewModel, NSObject item, [NotNull] NSCoder coder, [NotNull] IDataContext context)
        {
            var state = _viewModelProvider.PreserveViewModel(viewModel, context);

            using (var stream = _serializer.Serialize(state))
                coder.Encode(stream.ToArray(), VmStateKey);
        }
        private static void OnViewModelPreserved(IViewModelProvider sender, ViewModelPreservedEventArgs args)
        {
            var mainViewModel = args.ViewModel as MainViewModel;

            if (mainViewModel?.SelectedItem != null)
            {
                args.State.AddOrUpdate(SelectedItemState, sender.PreserveViewModel(mainViewModel.SelectedItem, DataContext.Empty));
            }
        }
Example #3
0
        /// <summary>
        ///     Occurs on save element state.
        /// </summary>
        public virtual void OnSaveState(FrameworkElement element, IDictionary <string, object> state, object args,
                                        IDataContext context = null)
        {
            Should.NotBeNull(element, "element");
            Should.NotBeNull(state, "state");
            var viewModel = element.DataContext as IViewModel;

            if (viewModel != null)
            {
                state[VmStateKey] = new LazySerializableContainer(_serializer,
                                                                  _viewModelProvider.PreserveViewModel(viewModel, context ?? DataContext.Empty), viewModel);
            }
        }
        protected virtual void SaveStateInternal([NotNull] IDataContext context)
        {
            var dictionary = GetStateDictionary?.Invoke();
            var viewModels = _openedViewModels.ToArray();

            if (viewModels.Length == 0 || dictionary == null)
            {
                return;
            }
            for (var i = 0; i < viewModels.Length; i++)
            {
                var viewModel = viewModels[i];
                var vmId      = viewModel.GetViewModelId().ToString("n");
                var state     = _serializer.Serialize(_viewModelProvider.PreserveViewModel(viewModel, context)).ToArray();
                dictionary[NumberPrefix + vmId] = i;
                dictionary[StatePrefix + vmId]  = state;
            }
        }
Example #5
0
        private void SaveState(NSObject item, IViewModel viewModel, NSCoder coder)
        {
            object navigationParameter = (item as UIViewController).GetNavigationParameter();

            if (navigationParameter != null)
            {
                using (Stream stream = _serializer.Serialize(navigationParameter))
                    coder.Encode(stream.ToArray(), ParameterStateKey);
            }

            if (viewModel == null)
            {
                return;
            }
            coder.Encode(new NSString(viewModel.GetType().AssemblyQualifiedName), VmTypeKey);
            var state = _viewModelProvider.PreserveViewModel(viewModel, DataContext.Empty);

            using (var stream = _serializer.Serialize(state))
                coder.Encode(stream.ToArray(), VmStateKey);
        }
Example #6
0
 protected virtual void PreserveViewModel([NotNull] IViewModel viewModel, [NotNull] FrameworkElement element,
                                          [NotNull] IDictionary <string, object> state, [NotNull] object args, [NotNull] IDataContext context)
 {
     state[VmStateKey] = new LazySerializableContainer(_serializer, _viewModelProvider.PreserveViewModel(viewModel, context));
 }