/// <summary> /// Trata el evento de cierre de un documento /// </summary> private bool TreatEventCloseForm(PaneViewModel paneViewModel) { bool canClose = true; IFormView formView = paneViewModel?.GetFormView(); // Comprueba el ViewModel del control para comprobar si se puede cerrar if (formView != null && formView.FormView.ViewModel.IsUpdated) { SystemControllerEnums.ResultType result; // Pregunta si se debe grabar el documento result = Globals.HostController.ControllerWindow.ShowQuestionCancel("Se han realizado modificaciones que aún no se han grabado. ¿Desea grabarlas ahora?"); // Graba el documento si es necesario if (result == SystemControllerEnums.ResultType.Yes) { // Graba el documento (formView.FormView.ViewModel as BaseFormViewModel)?.SaveCommand.Execute(null); // Comprueba si se puede cerrar la ventana canClose = !formView.FormView.IsUpdated; } else { canClose = result != SystemControllerEnums.ResultType.Cancel; } } // Si se puede borrar, elimina la ventana de la colección if (canClose) { Documents.Remove(paneViewModel.WindowID); formView.FormView.CloseViewModel(); } // Devuelve el valor que indica si se puede cerrar return(canClose); }