/// <param name="closeWindow">The action that closes the related dialog.</param>
 protected TemplateChooserViewModelBase(Action closeWindow)
 {
     GcpProjectId = CredentialsStore.Default.CurrentProjectId ?? "";
     OkCommand    = new ProtectedCommand(
         () =>
     {
         Result = CreateResult();
         closeWindow();
     });
 }
 /// <param name="closeWindow">The action that will close the dialog.</param>
 /// <param name="promptPickProject">The function that will prompt the user to pick an existing project.</param>
 public TemplateChooserViewModel(Action closeWindow, Func <Project> promptPickProject)
 {
     GcpProjectId = CredentialsStore.Default.CurrentProjectId ?? "";
     OkCommand    = new ProtectedCommand(
         () =>
     {
         Result = new TemplateChooserViewModelResult(this);
         closeWindow();
     });
     SelectProjectCommand =
         new ProtectedCommand(() => GcpProjectId = promptPickProject()?.ProjectId ?? GcpProjectId);
     SelectedFramework = NetCoreAvailable ? FrameworkType.NetCore : FrameworkType.NetFramework;
 }