public static void ShowMensajeProgreso(string Mensaje, TipoLoader Loader = TipoLoader.PROGRESSRING)
        {
            try
            {
                switch (Loader)
                {
                case TipoLoader.PROGRESSRING:
                    _ShowProgressRing = Visibility.Visible;
                    RaiseStaticPropertyChanged("ShowProgressRing");
                    break;

                case TipoLoader.PROGRESSBAR:
                    _ShowProgressBar = Visibility.Visible;
                    RaiseStaticPropertyChanged("ShowProgressBar");
                    break;

                case TipoLoader.METROPROGRESSBAR:
                    _ShowMetroProgressBar = Visibility.Visible;
                    RaiseStaticPropertyChanged("ShowMetroProgressBar");
                    break;

                default:
                    break;
                }

                _ProgressMessage = Mensaje;
                RaiseStaticPropertyChanged("ProgressMessage");

                _ShowProgressDialog = Visibility.Visible;
                RaiseStaticPropertyChanged("ShowProgressDialog");
            }
            catch (Exception ex)
            {
                StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al mostrar el mensaje de progreso", ex);
            }
        }
        /// <summary>
        /// Metodo auxiliar para ejecutar procesos asincronos
        /// </summary>
        /// <typeparam name="T">Objeto que regresa el proceso</typeparam>
        /// <param name="Mensaje">Mensaje para el usuario</param>
        /// <param name="predicade">Proceso</param>
        /// <param name="Tipo_Loader">Tipo de loading</param>
        /// <returns>Respuesta del Proceso</returns>
        public static async Task <T> OperacionesAsync <T>(string Mensaje, Func <T> predicade, TipoLoader Tipo_Loader = TipoLoader.PROGRESSRING)
        {
            T result = default(T);

            try
            {
                StaticSourcesViewModel.ShowMensajeProgreso(Mensaje, Tipo_Loader);
                result = await Task.Factory.StartNew <T>(predicade);
            }
            catch (Exception ex)
            {
                StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error en el proceso", ex);
            }
            finally
            {
                StaticSourcesViewModel.CloseMensajeProgreso();
            }
            return(result);
        }