From d6529646a8724b8e3c7acc15304633777cb9c037 Mon Sep 17 00:00:00 2001 From: Geoffroy BONNEVILLE Date: Wed, 29 Apr 2020 09:44:32 +0200 Subject: [PATCH] Split ViewModelLocator --- ModernKeePass/ViewModels/ViewModelLocator.cs | 57 +----------- .../ViewModels/ViewModelLocatorCommon.cs | 90 +++++++++++++++++++ WinAppCommon/WinAppCommon.projitems | 1 + 3 files changed, 92 insertions(+), 56 deletions(-) create mode 100644 WinAppCommon/ViewModels/ViewModelLocatorCommon.cs diff --git a/ModernKeePass/ViewModels/ViewModelLocator.cs b/ModernKeePass/ViewModels/ViewModelLocator.cs index b2dc799..f5959ca 100644 --- a/ModernKeePass/ViewModels/ViewModelLocator.cs +++ b/ModernKeePass/ViewModels/ViewModelLocator.cs @@ -14,13 +14,7 @@ using System; using CommonServiceLocator; -using GalaSoft.MvvmLight; using GalaSoft.MvvmLight.Ioc; -using GalaSoft.MvvmLight.Views; -using MediatR; -using Microsoft.Extensions.DependencyInjection; -using ModernKeePass.Application.Common.Interfaces; -using ModernKeePass.ViewModels.ListItems; namespace ModernKeePass.ViewModels { @@ -28,71 +22,22 @@ namespace ModernKeePass.ViewModels /// This class contains static references to all the view models in the /// application and provides an entry point for the bindings. /// - public class ViewModelLocator + public class ViewModelLocator: ViewModelLocatorCommon { /// /// Initializes a new instance of the ViewModelLocator class. /// public ViewModelLocator() { - ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); - - if (ViewModelBase.IsInDesignModeStatic) - { - // Create design time view services and models - //SimpleIoc.Default.Register(); - } - else - { - // Create run time view services and models - //SimpleIoc.Default.Register();IDataService - SimpleIoc.Default.Register(() => App.Services.GetRequiredService()); - SimpleIoc.Default.Register(() => App.Services.GetRequiredService()); - SimpleIoc.Default.Register(() => App.Services.GetRequiredService()); - SimpleIoc.Default.Register(() => App.Services.GetRequiredService()); - SimpleIoc.Default.Register(() => App.Services.GetRequiredService()); - SimpleIoc.Default.Register(() => App.Services.GetRequiredService()); - SimpleIoc.Default.Register(() => App.Services.GetRequiredService()); - SimpleIoc.Default.Register(() => App.Services.GetRequiredService()); - } - SimpleIoc.Default.Register(); - SimpleIoc.Default.Register(); - SimpleIoc.Default.Register(); - SimpleIoc.Default.Register(); - SimpleIoc.Default.Register(); - SimpleIoc.Default.Register(); - SimpleIoc.Default.Register(); - SimpleIoc.Default.Register(); SimpleIoc.Default.Register(); - SimpleIoc.Default.Register(); - SimpleIoc.Default.Register(); - SimpleIoc.Default.Register(); - SimpleIoc.Default.Register(); SimpleIoc.Default.Register(); SimpleIoc.Default.Register(); } public MainVm Main => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); public SettingsVm Settings => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); - public SettingsDatabaseVm SettingsDatabase => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); - public SettingsNewVm SettingsNew => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); - public SettingsSaveVm SettingsSave => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); - public SettingsSecurityVm SettingsSecurity => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); - public OpenDatabaseControlVm OpenDatabaseControl => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); - public SetCredentialsVm SetCredentials => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); - public TopMenuVm TopMenu => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); - public NewVm New => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); - public OpenVm Open => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); - public RecentVm Recent => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); - public SaveVm Save => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); public GroupDetailVm Group => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); public EntryDetailVm Entry => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); - - public static void Cleanup() - { - // TODO Clear the ViewModels - SimpleIoc.Default.Reset(); - } } } \ No newline at end of file diff --git a/WinAppCommon/ViewModels/ViewModelLocatorCommon.cs b/WinAppCommon/ViewModels/ViewModelLocatorCommon.cs new file mode 100644 index 0000000..9c92ef8 --- /dev/null +++ b/WinAppCommon/ViewModels/ViewModelLocatorCommon.cs @@ -0,0 +1,90 @@ +/* + In App.xaml: + + + + + In the View: + DataContext="{Binding Source={StaticResource Locator}, Path=ViewModelName}" + + You can also use Blend to do all this with the tool's support. + See http://www.galasoft.ch/mvvm +*/ + +using System; +using CommonServiceLocator; +using GalaSoft.MvvmLight; +using GalaSoft.MvvmLight.Ioc; +using GalaSoft.MvvmLight.Views; +using MediatR; +using Microsoft.Extensions.DependencyInjection; +using ModernKeePass.Application.Common.Interfaces; +using ModernKeePass.ViewModels.ListItems; + +namespace ModernKeePass.ViewModels +{ + /// + /// This class contains static references to all the view models in the + /// application and provides an entry point for the bindings. + /// + public class ViewModelLocatorCommon + { + /// + /// Initializes a new instance of the ViewModelLocator class. + /// + public ViewModelLocatorCommon() + { + ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); + + if (ViewModelBase.IsInDesignModeStatic) + { + // Create design time view services and models + //SimpleIoc.Default.Register(); + } + else + { + // Create run time view services and models + //SimpleIoc.Default.Register();IDataService + SimpleIoc.Default.Register(() => App.Services.GetRequiredService()); + SimpleIoc.Default.Register(() => App.Services.GetRequiredService()); + SimpleIoc.Default.Register(() => App.Services.GetRequiredService()); + SimpleIoc.Default.Register(() => App.Services.GetRequiredService()); + SimpleIoc.Default.Register(() => App.Services.GetRequiredService()); + SimpleIoc.Default.Register(() => App.Services.GetRequiredService()); + SimpleIoc.Default.Register(() => App.Services.GetRequiredService()); + SimpleIoc.Default.Register(() => App.Services.GetRequiredService()); + } + + SimpleIoc.Default.Register(); + SimpleIoc.Default.Register(); + SimpleIoc.Default.Register(); + SimpleIoc.Default.Register(); + SimpleIoc.Default.Register(); + SimpleIoc.Default.Register(); + SimpleIoc.Default.Register(); + SimpleIoc.Default.Register(); + SimpleIoc.Default.Register(); + SimpleIoc.Default.Register(); + SimpleIoc.Default.Register(); + } + + public SettingsDatabaseVm SettingsDatabase => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); + public SettingsNewVm SettingsNew => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); + public SettingsSaveVm SettingsSave => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); + public SettingsSecurityVm SettingsSecurity => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); + public OpenDatabaseControlVm OpenDatabaseControl => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); + public SetCredentialsVm SetCredentials => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); + public TopMenuVm TopMenu => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); + public NewVm New => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); + public OpenVm Open => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); + public RecentVm Recent => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); + public SaveVm Save => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); + + public static void Cleanup() + { + // TODO Clear the ViewModels + SimpleIoc.Default.Reset(); + } + } +} \ No newline at end of file diff --git a/WinAppCommon/WinAppCommon.projitems b/WinAppCommon/WinAppCommon.projitems index aea74a8..5fce321 100644 --- a/WinAppCommon/WinAppCommon.projitems +++ b/WinAppCommon/WinAppCommon.projitems @@ -42,6 +42,7 @@ +