/// <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="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();
        }