diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs index 2c5a73cfb..f9c43afc0 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs @@ -1,6 +1,6 @@ using eShopOnContainers.Core.Helpers; using eShopOnContainers.Services; -using eShopOnContainers.ViewModels.Base; +using eShopOnContainers.Core.ViewModels.Base; using System.Threading.Tasks; using Xamarin.Forms; using Xamarin.Forms.Xaml; @@ -27,13 +27,13 @@ namespace eShopOnContainers private void InitApp() { UseMockServices = Settings.UseMocks; - - ViewModelLocator.Instance.UpdateDependencies(UseMockServices); + ViewModelLocator.Initialize(); + ViewModelLocator.UpdateDependencies(UseMockServices); } private Task InitNavigation() { - var navigationService = ViewModelLocator.Instance.Resolve(); + var navigationService = ViewModelLocator.Resolve(); return navigationService.InitializeAsync(); } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/ServicesHelper.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/ServicesHelper.cs index 29bbe2718..5241fd823 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/ServicesHelper.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/ServicesHelper.cs @@ -1,6 +1,6 @@ using eShopOnContainers.Core.Models.Basket; using eShopOnContainers.Core.Models.Catalog; -using eShopOnContainers.ViewModels.Base; +using eShopOnContainers.Core.ViewModels.Base; using System; using System.Collections.Generic; using System.Diagnostics; @@ -21,7 +21,7 @@ namespace eShopOnContainers.Core.Helpers try { - if (!ViewModelLocator.Instance.UseMockService + if (!ViewModelLocator.UseMockService && Settings.UrlBase != GlobalSetting.DefaultEndpoint) { foreach (var catalogItem in catalogItems) @@ -54,7 +54,7 @@ namespace eShopOnContainers.Core.Helpers try { - if (!ViewModelLocator.Instance.UseMockService + if (!ViewModelLocator.UseMockService && Settings.UrlBase != GlobalSetting.DefaultEndpoint) { foreach (var basketItem in basketItems) diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/Settings.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/Settings.cs index 71bd832bc..d698dc101 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/Settings.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/Settings.cs @@ -1,4 +1,4 @@ -using eShopOnContainers.ViewModels.Base; +using eShopOnContainers.Core.ViewModels.Base; using Plugin.Settings; using Plugin.Settings.Abstractions; @@ -27,7 +27,7 @@ namespace eShopOnContainers.Core.Helpers private const string IdUrlBase = "url_base"; private static readonly string AccessTokenDefault = string.Empty; private static readonly string IdTokenDefault = string.Empty; - private static readonly bool UseMocksDefault = ViewModelLocator.Instance.UseMockService; + private static readonly bool UseMocksDefault = ViewModelLocator.UseMockService; private static readonly string UrlBaseDefault = GlobalSetting.Instance.BaseEndpoint; #endregion diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Navigation/INavigationService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Navigation/INavigationService.cs index ce3c56964..64ef7d807 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Navigation/INavigationService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Navigation/INavigationService.cs @@ -1,4 +1,4 @@ -using eShopOnContainers.ViewModels.Base; +using eShopOnContainers.Core.ViewModels.Base; using System; using System.Threading.Tasks; diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Navigation/NavigationService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Navigation/NavigationService.cs index 22383fdb1..38cdaee8d 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Navigation/NavigationService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Navigation/NavigationService.cs @@ -1,9 +1,10 @@ using eShopOnContainers.Core.Helpers; using eShopOnContainers.Core.ViewModels; using eShopOnContainers.Core.Views; -using eShopOnContainers.ViewModels.Base; +using eShopOnContainers.Core.ViewModels.Base; using System; -using System.Collections.Generic; +using System.Globalization; +using System.Reflection; using System.Threading.Tasks; using Xamarin.Forms; @@ -11,8 +12,6 @@ namespace eShopOnContainers.Services { public class NavigationService : INavigationService { - protected readonly Dictionary _mappings; - protected Application CurrentApplication { get @@ -21,13 +20,6 @@ namespace eShopOnContainers.Services } } - public NavigationService() - { - _mappings = new Dictionary(); - - CreatePageViewModelMappings(); - } - public Task InitializeAsync() { if(string.IsNullOrEmpty(Settings.AuthAccessToken)) @@ -100,7 +92,7 @@ namespace eShopOnContainers.Services protected virtual async Task InternalNavigateToAsync(Type viewModelType, object parameter) { - Page page = CreateAndBindPage(viewModelType, parameter); + Page page = CreatePage(viewModelType, parameter); if (page is LoginView) { @@ -109,7 +101,6 @@ namespace eShopOnContainers.Services else { var navigationPage = CurrentApplication.MainPage as CustomNavigationView; - if (navigationPage != null) { await navigationPage.PushAsync(page); @@ -123,42 +114,25 @@ namespace eShopOnContainers.Services await (page.BindingContext as ViewModelBase).InitializeAsync(parameter); } - protected Type GetPageTypeForViewModel(Type viewModelType) - { - if (!_mappings.ContainsKey(viewModelType)) - { - throw new KeyNotFoundException($"No map for ${viewModelType} was found on navigation mappings"); - } - - return _mappings[viewModelType]; - } - - protected Page CreateAndBindPage(Type viewModelType, object parameter) - { - Type pageType = GetPageTypeForViewModel(viewModelType); - - if (pageType == null) - { - throw new Exception($"Mapping type for {viewModelType} is not a page"); - } - - Page page = Activator.CreateInstance(pageType) as Page; - ViewModelBase viewModel = ViewModelLocator.Instance.Resolve(viewModelType) as ViewModelBase; - page.BindingContext = viewModel; - - return page; - } - - private void CreatePageViewModelMappings() - { - _mappings.Add(typeof(BasketViewModel), typeof(BasketView)); - _mappings.Add(typeof(CatalogViewModel), typeof(CatalogView)); - _mappings.Add(typeof(CheckoutViewModel), typeof(CheckoutView)); - _mappings.Add(typeof(LoginViewModel), typeof(LoginView)); - _mappings.Add(typeof(MainViewModel), typeof(MainView)); - _mappings.Add(typeof(OrderDetailViewModel), typeof(OrderDetailView)); - _mappings.Add(typeof(ProfileViewModel), typeof(ProfileView)); - _mappings.Add(typeof(SettingsViewModel), typeof(SettingsView)); - } + protected Type GetPageTypeForViewModel(Type viewModelType) + { + var viewName = viewModelType.FullName.Replace("Model", string.Empty); + var viewModelAssemblyName = viewModelType.GetTypeInfo().Assembly.FullName; + var viewAssemblyName = string.Format(CultureInfo.InvariantCulture, "{0}, {1}", viewName, viewModelAssemblyName); + var viewType = Type.GetType(viewAssemblyName); + return viewType; + } + + protected Page CreatePage(Type viewModelType, object parameter) + { + Type pageType = GetPageTypeForViewModel(viewModelType); + if (pageType == null) + { + throw new Exception($"Cannot locate page type for {viewModelType}"); + } + + Page page = Activator.CreateInstance(pageType) as Page; + return page; + } } } \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Validations/ValidatableObject.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Validations/ValidatableObject.cs index b7caa0d0d..d7dcdf737 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Validations/ValidatableObject.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Validations/ValidatableObject.cs @@ -1,4 +1,4 @@ -using eShopOnContainers.ViewModels.Base; +using eShopOnContainers.Core.ViewModels.Base; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ExtendedBindableObject.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ExtendedBindableObject.cs index eab1380aa..96ae124c0 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ExtendedBindableObject.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ExtendedBindableObject.cs @@ -3,7 +3,7 @@ using System.Linq.Expressions; using System.Reflection; using Xamarin.Forms; -namespace eShopOnContainers.ViewModels.Base +namespace eShopOnContainers.Core.ViewModels.Base { public abstract class ExtendedBindableObject : BindableObject { diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelBase.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelBase.cs index 299c2985a..cd36fb3cc 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelBase.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelBase.cs @@ -1,9 +1,8 @@ -using eShopOnContainers.Core; -using eShopOnContainers.Core.Helpers; +using eShopOnContainers.Core.Helpers; using eShopOnContainers.Services; using System.Threading.Tasks; -namespace eShopOnContainers.ViewModels.Base +namespace eShopOnContainers.Core.ViewModels.Base { public abstract class ViewModelBase : ExtendedBindableObject { @@ -28,8 +27,8 @@ namespace eShopOnContainers.ViewModels.Base public ViewModelBase() { - DialogService = ViewModelLocator.Instance.Resolve(); - NavigationService = ViewModelLocator.Instance.Resolve(); + DialogService = ViewModelLocator.Resolve(); + NavigationService = ViewModelLocator.Resolve(); GlobalSetting.Instance.BaseEndpoint = Settings.UrlBase; } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs index 82145d466..c9e253a2e 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs @@ -1,7 +1,8 @@ using Microsoft.Practices.Unity; -using eShopOnContainers.Core.ViewModels; using eShopOnContainers.Services; using System; +using System.Globalization; +using System.Reflection; using eShopOnContainers.Core.Services.Catalog; using eShopOnContainers.Core.Services.OpenUrl; using eShopOnContainers.Core.Services.RequestProvider; @@ -9,100 +10,101 @@ using eShopOnContainers.Core.Services.Basket; using eShopOnContainers.Core.Services.Identity; using eShopOnContainers.Core.Services.Order; using eShopOnContainers.Core.Services.User; +using Xamarin.Forms; -namespace eShopOnContainers.ViewModels.Base +namespace eShopOnContainers.Core.ViewModels.Base { - public class ViewModelLocator + public static class ViewModelLocator { - private bool _useMockService; - private readonly IUnityContainer _unityContainer; + private static readonly IUnityContainer _unityContainer = new UnityContainer(); - private static readonly ViewModelLocator _instance = new ViewModelLocator(); + public static readonly BindableProperty AutoWireViewModelProperty = + BindableProperty.CreateAttached("AutoWireViewModel", typeof(bool), typeof(ViewModelLocator), default(bool), propertyChanged: OnAutoWireViewModelChanged); - public static ViewModelLocator Instance - { - get { return _instance; } - } + public static bool GetAutoWireViewModel(BindableObject bindable) + { + return (bool)bindable.GetValue(ViewModelLocator.AutoWireViewModelProperty); + } - public bool UseMockService - { - get { return _useMockService; } - set { _useMockService = value; ; } - } + public static void SetAutoWireViewModel(BindableObject bindable, bool value) + { + bindable.SetValue(ViewModelLocator.AutoWireViewModelProperty, value); + } - protected ViewModelLocator() - { - _unityContainer = new UnityContainer(); + public static bool UseMockService { get; set; } - // Services - _unityContainer.RegisterType(); - RegisterSingleton(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); + public static void Initialize() + { + // Services + _unityContainer.RegisterType(); + _unityContainer.RegisterType(new ContainerControlledLifetimeManager()); + _unityContainer.RegisterType(); + _unityContainer.RegisterType(); + _unityContainer.RegisterType(); + _unityContainer.RegisterType(); + _unityContainer.RegisterType(); + _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); + // View models + _unityContainer.RegisterType(); + _unityContainer.RegisterType(); + _unityContainer.RegisterType(); + _unityContainer.RegisterType(); + _unityContainer.RegisterType(); + _unityContainer.RegisterType(); + _unityContainer.RegisterType(); + _unityContainer.RegisterType(); + } - // View models - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - } + public static void UpdateDependencies(bool useMockServices) + { + // Change injected dependencies + if (useMockServices) + { + _unityContainer.RegisterInstance(new CatalogMockService()); + _unityContainer.RegisterInstance(new BasketMockService()); + _unityContainer.RegisterInstance(new OrderMockService()); + _unityContainer.RegisterInstance(new UserMockService()); - public void UpdateDependencies(bool useMockServices) - { - // Change injected dependencies - if (useMockServices) - { - _unityContainer.RegisterInstance(new CatalogMockService()); - _unityContainer.RegisterInstance(new BasketMockService()); - _unityContainer.RegisterInstance(new OrderMockService()); - _unityContainer.RegisterInstance(new UserMockService()); + UseMockService = true; + } + else + { + var requestProvider = Resolve(); + _unityContainer.RegisterInstance(new CatalogService(requestProvider)); + _unityContainer.RegisterInstance(new BasketService(requestProvider)); + _unityContainer.RegisterInstance(new OrderService(requestProvider)); + _unityContainer.RegisterInstance(new UserService(requestProvider)); - UseMockService = true; - } - else - { - var requestProvider = Resolve(); - _unityContainer.RegisterInstance(new CatalogService(requestProvider)); - _unityContainer.RegisterInstance(new BasketService(requestProvider)); - _unityContainer.RegisterInstance(new OrderService(requestProvider)); - _unityContainer.RegisterInstance(new UserService(requestProvider)); + UseMockService = false; + } + } - UseMockService = false; - } - } - - public T Resolve() - { - return _unityContainer.Resolve(); - } + public static T Resolve() + { + return _unityContainer.Resolve(); + } - public object Resolve(Type type) - { - return _unityContainer.Resolve(type); - } + private static void OnAutoWireViewModelChanged(BindableObject bindable, object oldValue, object newValue) + { + var view = bindable as Element; + if (view == null) + { + return; + } - public void Register(T instance) - { - _unityContainer.RegisterInstance(instance); - } + var viewType = view.GetType(); + var viewName = viewType.FullName.Replace(".Views.", ".ViewModels."); + var viewAssemblyName = viewType.GetTypeInfo().Assembly.FullName; + var viewModelName = string.Format(CultureInfo.InvariantCulture, "{0}Model, {1}", viewName, viewAssemblyName); - public void Register() where T : TInterface - { - _unityContainer.RegisterType(); - } - - public void RegisterSingleton() where T : TInterface - { - _unityContainer.RegisterType(new ContainerControlledLifetimeManager()); - } - } + var viewModelType = Type.GetType(viewModelName); + if (viewModelType == null) + { + return; + } + var viewModel = _unityContainer.Resolve(viewModelType); + view.BindingContext = viewModel; + } + } } \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/BasketViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/BasketViewModel.cs index 1a0c6f740..e546c4592 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/BasketViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/BasketViewModel.cs @@ -4,8 +4,6 @@ using eShopOnContainers.Core.Models.Catalog; using eShopOnContainers.Core.Services.Basket; using eShopOnContainers.Core.Services.User; using eShopOnContainers.Core.ViewModels.Base; -using eShopOnContainers.ViewModels.Base; -using System; using System.Collections.ObjectModel; using System.Linq; using System.Threading.Tasks; diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CatalogViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CatalogViewModel.cs index a2b8501ae..82767e9d7 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CatalogViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CatalogViewModel.cs @@ -1,14 +1,11 @@ using System.Threading.Tasks; -using eShopOnContainers.ViewModels.Base; +using eShopOnContainers.Core.ViewModels.Base; using System.Collections.ObjectModel; using Xamarin.Forms; -using eShopOnContainers.Core.ViewModels.Base; using eShopOnContainers.Core.Models.Catalog; using eShopOnContainers.Core.Services.Catalog; using System.Windows.Input; -using System.Linq; using eShopOnContainers.Core.Services.Basket; -using eShopOnContainers.Core.Helpers; using eShopOnContainers.Core.Services.User; namespace eShopOnContainers.Core.ViewModels diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CheckoutViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CheckoutViewModel.cs index 41b8220e6..96488edfb 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CheckoutViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CheckoutViewModel.cs @@ -1,5 +1,5 @@ using eShopOnContainers.Core.Models.Navigation; -using eShopOnContainers.ViewModels.Base; +using eShopOnContainers.Core.ViewModels.Base; using System.Windows.Input; using Xamarin.Forms; using System.Threading.Tasks; @@ -138,7 +138,7 @@ namespace eShopOnContainers.Core.ViewModels await _basketService.ClearBasketAsync(_shippingAddress.Id.ToString(), authToken); // Reset Basket badge - var basketViewModel = ViewModelLocator.Instance.Resolve(); + var basketViewModel = ViewModelLocator.Resolve(); basketViewModel.BadgeCount = 0; // Navigate to Orders diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs index 53f5998a0..98c6d9222 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs @@ -4,7 +4,7 @@ using eShopOnContainers.Core.Services.Identity; using eShopOnContainers.Core.Services.OpenUrl; using eShopOnContainers.Core.Services.User; using eShopOnContainers.Core.Validations; -using eShopOnContainers.ViewModels.Base; +using eShopOnContainers.Core.ViewModels.Base; using IdentityModel.Client; using System; using System.Diagnostics; diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/MainViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/MainViewModel.cs index aa279ee0d..eebc17e35 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/MainViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/MainViewModel.cs @@ -1,5 +1,5 @@ using System.Threading.Tasks; -using eShopOnContainers.ViewModels.Base; +using eShopOnContainers.Core.ViewModels.Base; using eShopOnContainers.Core.Models.Navigation; using Xamarin.Forms; using eShopOnContainers.Core.ViewModels.Base; diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/OrderDetailViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/OrderDetailViewModel.cs index 7156038af..86b5a906a 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/OrderDetailViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/OrderDetailViewModel.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; using eShopOnContainers.Core.Models.Orders; -using eShopOnContainers.ViewModels.Base; +using eShopOnContainers.Core.ViewModels.Base; using eShopOnContainers.Core.Services.Catalog; using eShopOnContainers.Core.Services.Basket; using eShopOnContainers.Core.Services.Order; diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/ProfileViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/ProfileViewModel.cs index 9856b7a21..2cc1ab9d9 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/ProfileViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/ProfileViewModel.cs @@ -3,7 +3,7 @@ using eShopOnContainers.Core.Helpers; using eShopOnContainers.Core.Models.Orders; using eShopOnContainers.Core.Models.User; using eShopOnContainers.Core.Services.Order; -using eShopOnContainers.ViewModels.Base; +using eShopOnContainers.Core.ViewModels.Base; using System.Collections.ObjectModel; using System.Threading.Tasks; using System.Windows.Input; diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs index 1fa5b54b6..c5a58b745 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs @@ -1,4 +1,4 @@ -using eShopOnContainers.ViewModels.Base; +using eShopOnContainers.Core.ViewModels.Base; using System.Windows.Input; using Xamarin.Forms; using System.Threading.Tasks; @@ -71,7 +71,7 @@ namespace eShopOnContainers.Core.ViewModels private void MockServices() { - ViewModelLocator.Instance.UpdateDependencies(!UseAzureServices); + ViewModelLocator.UpdateDependencies(!UseAzureServices); UpdateInfo(); } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/BasketView.xaml b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/BasketView.xaml index e7499fd66..012357ec1 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/BasketView.xaml +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/BasketView.xaml @@ -1,10 +1,12 @@ + viewModelBase:ViewModelLocator.AutoWireViewModel="true" + Title="Cart"> diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/CatalogView.xaml b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/CatalogView.xaml index 870980ac2..d62ca11fc 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/CatalogView.xaml +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/CatalogView.xaml @@ -1,12 +1,14 @@ - + diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/CheckoutView.xaml b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/CheckoutView.xaml index 921d739f3..fe1843d35 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/CheckoutView.xaml +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/CheckoutView.xaml @@ -1,8 +1,10 @@ - + diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/LoginView.xaml b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/LoginView.xaml index d713e0691..b8ac57399 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/LoginView.xaml +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/LoginView.xaml @@ -2,9 +2,11 @@ + xmlns:behaviors="clr-namespace:eShopOnContainers.Core.Behaviors;assembly=eShopOnContainers.Core" + viewModelBase:ViewModelLocator.AutoWireViewModel="true"> + + BarTextColor="{StaticResource WhiteColor}" + viewModelBase:ViewModelLocator.AutoWireViewModel="true"> (); - await homeViewModel.InitializeAsync(null); - HomeView.BindingContext = homeViewModel; - - var basketViewModel = ViewModelLocator.Instance.Resolve(); - await basketViewModel.InitializeAsync(null); - BasketView.BindingContext = basketViewModel; - - var profileViewModel = ViewModelLocator.Instance.Resolve(); - await profileViewModel.InitializeAsync(null); - ProfileView.BindingContext = profileViewModel; + await ((CatalogViewModel)HomeView.BindingContext).InitializeAsync(null); + await ((BasketViewModel)BasketView.BindingContext).InitializeAsync(null); + await ((ProfileViewModel)ProfileView.BindingContext).InitializeAsync(null); } } } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/OrderDetailView.xaml b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/OrderDetailView.xaml index d0c2602fc..63a46965e 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/OrderDetailView.xaml +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/OrderDetailView.xaml @@ -1,10 +1,12 @@ - + diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/ProfileView.xaml b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/ProfileView.xaml index 0662d40ac..91165559c 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/ProfileView.xaml +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/ProfileView.xaml @@ -1,10 +1,12 @@ - + diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/SettingsView.xaml b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/SettingsView.xaml index b13a4855d..167e637e6 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/SettingsView.xaml +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/SettingsView.xaml @@ -1,11 +1,13 @@ - +