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)); } }
/// <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; } }
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); }
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)); }