/// <summary>
        /// Attempts to run the template wizard.
        /// </summary>
        /// <param name="shell">The <see cref="IVsUIShell">shell</see> associated with the wizard.</param>
        /// <returns>True if the wizard completed successfully; otherwise, false if the wizard was canceled.</returns>
        protected override bool TryRunWizard( IVsUIShell shell )
        {
            Arg.NotNull( shell, nameof( shell ) );

            var mapper = new ProjectReplacementsMapper();
            var model = new ProjectTemplateWizardViewModel();
            var view = new NewProjectTemplateWizard( model );

            // map replacements to model
            mapper.Map( Context.Replacements, model );

            if ( !( view.ShowDialog( shell ) ?? false ) )
                return false;

            // map model back to replacements
            mapper.Map( model, Context.Replacements );

            return true;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="NewProjectTemplateWizard"/> class.
 /// </summary>
 /// <param name="model">The <see cref="ProjectTemplateWizardViewModel">model</see> for the view.</param>
 public NewProjectTemplateWizard( ProjectTemplateWizardViewModel model )
     : this()
 {
     DataContext = model;
 }