private void OnCurrentNavigationsCompleted(IViewModel viewModel) { var mainViewModel = _navigationDispatcher.GetTopViewModels().OfType <MainViewModel>().FirstOrDefault(); if (mainViewModel == null) { mainViewModel = _viewModelProvider.GetViewModel <MainViewModel>(); mainViewModel.ShowAsync((model, result) => model.Dispose(), context: new DataContext { { NavigationConstants.ClearBackStack, true } }); } var oldValue = mainViewModel.SelectedItem; if (oldValue == viewModel) { return; } mainViewModel.SelectedItem = viewModel; _navigationDispatcher.OnNavigated(new NavigationContext(SplitViewNavigationType, NavigationMode.New, oldValue, viewModel, this)); if (oldValue != null) { _navigationDispatcher.OnNavigated(new NavigationContext(SplitViewNavigationType, NavigationMode.Remove, oldValue, null, this)); } }
public static IViewModel GetViewModel([NotNull] this IViewModelProvider viewModelProvider, [NotNull] Type viewModelType, params DataConstantValue[] parameters) { Should.NotBeNull(viewModelProvider, nameof(viewModelProvider)); Should.NotBeNull(viewModelType, nameof(viewModelType)); return(viewModelProvider.GetViewModel(viewModelType, new DataContext(parameters))); }
protected virtual void Awake() { if (DataProviderComponent != null && DataProviderComponent is IViewModelProvider provider) { DataProvider = provider; if (DataProvider.GetViewModel() != null) { IsDataReady = true; SetupBinding(); } else { DataProvider.DataReadyEvent += OnDataReady; } } else { DataProvider = GetComponentInParent <IViewModelProvider>(); if (DataProvider.GetViewModel() != null) { IsDataReady = true; SetupBinding(); } else { DataProvider.DataReadyEvent += OnDataReady; } } }
public async Task ShowSensorHistoryAsync(int idSensor, IViewModel parentViewModel) { using (var vm = _viewModelProvider.GetViewModel <SensorHistoryVm>(parentViewModel, parameters: Constants.IdSensor.ToValue(idSensor))) { await vm.ShowAsync(); } }
public static T GetViewModel <T>([NotNull] this IViewModelProvider viewModelProvider, [NotNull] GetViewModelDelegate <T> getViewModelGeneric, params DataConstantValue[] parameters) where T : class, IViewModel { Should.NotBeNull(viewModelProvider, nameof(viewModelProvider)); Should.NotBeNull(getViewModelGeneric, nameof(getViewModelGeneric)); return((T)viewModelProvider.GetViewModel(getViewModelGeneric, new DataContext(parameters))); }
public static T GetViewModel <T>([NotNull] this IViewModelProvider viewModelProvider, [NotNull] GetViewModelDelegate <T> getViewModelGeneric, params DataConstantValue[] parameters) where T : IViewModel { Should.NotBeNull(viewModelProvider, "viewModelProvider"); Should.NotBeNull(getViewModelGeneric, "getViewModelGeneric"); return((T)viewModelProvider.GetViewModel(adapter => getViewModelGeneric(adapter), new DataContext(parameters))); }
public TViewModel GetViewModel() { var args = _argumentsProvider.GetArguments<TArg>(); var checkResult = _prerequisitesChecker.Check( args ); if ( checkResult.ContainsError ) throw new ArgumentException( checkResult.Message ); return _viewModelProvider.GetViewModel( args ); }
protected virtual IViewModel WrapInternal(IViewModel viewModel, Type wrapperType, IDataContext dataContext) { #if PCL_WINRT if (wrapperType.GetTypeInfo().IsGenericTypeDefinition) #else if (wrapperType.IsGenericTypeDefinition) #endif { wrapperType = wrapperType.MakeGenericType(viewModel.GetType()); } var vm = (IWrapperViewModel)_viewModelProvider.GetViewModel(wrapperType, dataContext ?? DataContext.Empty); vm.Wrap(viewModel, dataContext); return(vm); }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { IocInjector iocInjector = value as IocInjector; if (iocInjector != null) { IViewModelProvider viewModelProvider = iocInjector.Resolve <IViewModelProvider>(); if (viewModelProvider != null) { return(viewModelProvider.GetViewModel(parameter as Type)); } } return(null); }
protected virtual object WrapInternal(object item, WrapperRegistration wrapperRegistration, IDataContext dataContext) { if (wrapperRegistration.WrapperFactory != null) { return(wrapperRegistration.WrapperFactory(item, dataContext)); } var wrapperType = wrapperRegistration.Type; #if PCL_WINRT if (wrapperType.GetTypeInfo().IsGenericTypeDefinition) #else if (wrapperType.IsGenericTypeDefinition) #endif { wrapperType = wrapperType.MakeGenericType(item.GetType()); } var viewModel = item as IViewModel; if (viewModel != null && typeof(IWrapperViewModel).IsAssignableFrom(wrapperType)) { dataContext = dataContext.ToNonReadOnly(); if (!dataContext.Contains(InitializationConstants.ParentViewModel)) { var parentViewModel = viewModel.GetParentViewModel(); if (parentViewModel != null) { dataContext.AddOrUpdate(InitializationConstants.ParentViewModel, parentViewModel); } } var vm = (IWrapperViewModel)_viewModelProvider.GetViewModel(wrapperType, dataContext); vm.Wrap(viewModel, dataContext); return(vm); } #if PCL_WINRT var constructor = wrapperType.GetTypeInfo() .DeclaredConstructors .FirstOrDefault(info => !info.IsStatic); #else var constructor = wrapperType .GetConstructors(BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic) .FirstOrDefault(); #endif if (constructor == null) { return(null); } return(constructor.InvokeEx(item)); }
public virtual void SetupBinding() { ViewModel = DataProvider.GetViewModel(); }
public PresentationView(IViewModelProvider viewModelProvider) { InitializeComponent(); BindingContext = viewModelProvider.GetViewModel <PresentationViewModel>(Navigation); }