none
Editar la plantilla visual del Messagebox en Silverlight - Blend RRS feed

  • Pregunta

  • A ver si alguien sabe si se puede hacer lo que necesito y cómo hacerlo.

     Tengo un proyecto de tipo Aplicación de Silverlight, y un Diccionario de Recursos donde tengo TOOOOODOS los controles personalizados para mi proyecto, botones, textbox, listbox, datagrid, etc. todo tiene un diseño basado en los colores de la empresa, y todo funciona muy bien.

    El detalle que me está surgiendo ahorita, es que necesito utilizar el MessageBox para algunas validaciones, pero :S !! se vé totalmente fuera de diseño, con la ventana gris y los botones planos.... alguien sabe si puedo modificar la plantilla del Messagebox, para definirle el fondo de pantalla, el estilo de los botones, etc. para que se parezca al resto del diseño de mi proyecto??? cómo puedo hacer esto? para mi Diccionario de Recursos utilicé Blend para Microsoft 2012, pero ya busqué por allí no encuentro la forma de hacerlo.

    Saludos y gracias


    cyndyrdz

    martes, 17 de diciembre de 2013 22:21

Respuestas

  • Pues según creo no hay modo de editar el Messagebox, así que lo resolví con un ChidWindow, la cual agregué a mi Diccionario de Recursos, con el formato de diseño similar a todo mi proyecto, le agregué un ícono de Advertencia, un Textbox que recibe como parámetro al igual que el Título de la ventana, y los botones de Aceptar y Rechazar que ya tenía personalizados:

    namespace MTTO
    {
        /// <summary>
        /// ChildWindow que hace las veces de un MessageBox formateado
        /// Se debe enviar el título de la ventana y un mensaje para desplegar
        /// Y se recibe de respuesta un Aceptar o Cancelar
        /// <param name="titulo">Usado para indicar el nombre de la ventana</param>
        /// <param name="mensaje">Usado para indicar el mensaje que se desplegará</param>
        /// </summary>
        public partial class frmConfirmacion : ChildWindow
        {
            public frmConfirmacion(string titulo, string mensaje)
            {
                InitializeComponent();
                this.Title = titulo;
                txtMensaje.Text = mensaje;
            }
    
            private void OKButton_Click(object sender, RoutedEventArgs e)
            {
                /// <returns>Returns true.</returns>
                this.DialogResult = true;
                
            }
    
            private void CancelButton_Click(object sender, RoutedEventArgs e)
            {
                /// <returns>Returns false.</returns>
                this.DialogResult = false;
            }
        }
    }
    

    En su XAML le defino el estilo:

    Style="{StaticResource ChildWindowMtto}"

    y cuando la mando llamar, por ejemplo:

            #region Ventana de Confirmación de Cambios
    
            private ChildWindow Confirmar;
    
            private void ConfirmarCambios()
            {
                // CYRM Llamar a la ventana de confirmación. Se deben envíar como parámetros el Título para la ventana, y la pregunta a realizar
                Confirmar = new frmConfirmacion("Confirmación", "LOS CAMBIOS NO SE HAN GRABADO, DESEA ACEPTARLOS O RECHAZARLOS?");
                Confirmar.Closed += new EventHandler(resultado_Closed);
                Confirmar.Show();
            }
    
            private void resultado_Closed(object sender, EventArgs e)
            {
                // Se aceptaron los cambios
                if (Confirmar.DialogResult == true)
                    mtto_ActividadMttoDomainDataSource.SubmitChanges();
            }
    
            #endregion

    Ojalá que le sirva a alguien...Saludos...

    cyndyrdz

    martes, 24 de diciembre de 2013 14:59