/// <summary>
        /// Initializes a new instance of the <see cref="ViewsViewModel" /> class.
        /// </summary>
        /// <param name="visualStudioService">The visual studio service.</param>
        /// <param name="settingsService">The settings service.</param>
        /// <param name="frameworkFactory">The framework factory.</param>
        /// <param name="pageFactory">The page factory.</param>
        /// <param name="layoutFactory">The layout factory.</param>
        /// <param name="messageBoxService">The message box service.</param>
        /// <param name="mvvmCrossViewFactory">The MVVM cross view factory.</param>
        /// <param name="viewModelAndViewsFactory">The view model and views factory.</param>
        public ViewsViewModel(
            IVisualStudioService visualStudioService,
            ISettingsService settingsService,
            IFrameworkFactory frameworkFactory,
            IXamarinPageFactory pageFactory,
            IXamarinLayoutFactory layoutFactory,
            IMessageBoxService messageBoxService,
            IMvvmCrossViewFactory mvvmCrossViewFactory,
            IViewModelAndViewsFactory viewModelAndViewsFactory)
        {
            this.views = new ObservableCollection <View>();

            this.visualStudioService = visualStudioService;
            this.settingsService     = settingsService;
            this.frameworkFactory    = frameworkFactory;
            this.Pages             = pageFactory.Pages;
            this.Layouts           = layoutFactory.Layouts;
            this.messageBoxService = messageBoxService;
            this.MvxViews          = mvvmCrossViewFactory.Views;

            this.frameworks = frameworkFactory.AllowedFrameworks;

            this.allowFrameworkSelection = this.Frameworks.Count() > 1;

            this.DisplayGrid();

            this.MvvmCrossiOSViewTypes        = viewModelAndViewsFactory.GetAvailableMvvmCrossiOSViewTypes();
            this.SelectedMvvmCrossiOSViewType = this.settingsService.SelectedMvvmCrossiOSViewType;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ViewModelAndViewsFactory" /> class.
 /// </summary>
 /// <param name="visualStudioService">The visual studio service.</param>
 /// <param name="settingsService">The settings service.</param>
 /// <param name="resolverService">The resolver service.</param>
 /// <param name="registerService">The register service.</param>
 /// <param name="testingFrameworkFactory">The testing framework factory.</param>
 /// <param name="mvvmCrossViewFactory">The MVVM cross view factory.</param>
 public ViewModelAndViewsFactory(
     IVisualStudioService visualStudioService,
     ISettingsService settingsService,
     IResolverService resolverService,
     IRegisterService registerService,
     ITestingFrameworkFactory testingFrameworkFactory,
     IMvvmCrossViewFactory mvvmCrossViewFactory)
     : base(settingsService, 
     visualStudioService)
 {
     this.resolverService = resolverService;
     this.registerService = registerService;
     this.testingFrameworkFactory = testingFrameworkFactory;
     this.mvvmCrossViewFactory = mvvmCrossViewFactory;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ViewModelAndViewsFactory" /> class.
 /// </summary>
 /// <param name="visualStudioService">The visual studio service.</param>
 /// <param name="settingsService">The settings service.</param>
 /// <param name="resolverService">The resolver service.</param>
 /// <param name="registerService">The register service.</param>
 /// <param name="testingFrameworkFactory">The testing framework factory.</param>
 /// <param name="mvvmCrossViewFactory">The MVVM cross view factory.</param>
 public ViewModelAndViewsFactory(
     IVisualStudioService visualStudioService,
     ISettingsService settingsService,
     IResolverService resolverService,
     IRegisterService registerService,
     ITestingFrameworkFactory testingFrameworkFactory,
     IMvvmCrossViewFactory mvvmCrossViewFactory)
     : base(
         settingsService,
         visualStudioService)
 {
     this.resolverService         = resolverService;
     this.registerService         = registerService;
     this.testingFrameworkFactory = testingFrameworkFactory;
     this.mvvmCrossViewFactory    = mvvmCrossViewFactory;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="ViewsViewModel" /> class.
        /// </summary>
        /// <param name="visualStudioService">The visual studio service.</param>
        /// <param name="settingsService">The settings service.</param>
        /// <param name="frameworkFactory">The framework factory.</param>
        /// <param name="pageFactory">The page factory.</param>
        /// <param name="layoutFactory">The layout factory.</param>
        /// <param name="messageBoxService">The message box service.</param>
        /// <param name="mvvmCrossViewFactory">The MVVM cross view factory.</param>
        public ViewsViewModel(
            IVisualStudioService visualStudioService,
            ISettingsService settingsService,
            IFrameworkFactory frameworkFactory,
            IXamarinPageFactory pageFactory,
            IXamarinLayoutFactory layoutFactory,
            IMessageBoxService messageBoxService,
            IMvvmCrossViewFactory mvvmCrossViewFactory)
        {
            this.views = new ObservableCollection<View>();

            this.visualStudioService = visualStudioService;
            this.settingsService = settingsService;
            this.frameworkFactory = frameworkFactory;
            this.pageTypes = pageFactory.Pages;
            this.layoutTypes = layoutFactory.Layouts;
            this.messageBoxService = messageBoxService;
            this.mvxViews = mvvmCrossViewFactory.Views;

            this.frameworks = frameworkFactory.AllowedFrameworks;

            this.allowFrameworkSelection = this.Frameworks.Count() > 1;

            this.DisplayGrid();
        }