diff --git a/WinAppCommon/ViewModels/ViewModelLocator.cs b/WinAppCommon/ViewModels/ViewModelLocator.cs new file mode 100644 index 0000000..ca5e260 --- /dev/null +++ b/WinAppCommon/ViewModels/ViewModelLocator.cs @@ -0,0 +1,91 @@ +/* + 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 ViewModelLocator + { + /// + /// 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(); + } + + public MainVm Main => ServiceLocator.Current.GetInstance(); + public SettingsVm Settings => ServiceLocator.Current.GetInstance(); + public SettingsDatabaseVm SettingsDatabase => ServiceLocator.Current.GetInstance(); + public SettingsNewVm SettingsNew => ServiceLocator.Current.GetInstance(); + public SettingsSaveVm SettingsSave => ServiceLocator.Current.GetInstance(); + public SettingsSecurityVm SettingsSecurity => ServiceLocator.Current.GetInstance(); + public OpenDatabaseControlVm OpenDatabaseControl => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); + public SetCredentialsVm SetCredentials => ServiceLocator.Current.GetInstance(Guid.NewGuid().ToString()); + public NewVm New => ServiceLocator.Current.GetInstance(); + public OpenVm Open => ServiceLocator.Current.GetInstance(); + public RecentVm Recent => ServiceLocator.Current.GetInstance(); + public SaveVm Save => ServiceLocator.Current.GetInstance(); + + public static void Cleanup() + { + // TODO Clear the ViewModels + SimpleIoc.Default.Reset(); + } + } +} \ No newline at end of file