Featured Posts

Silverlight 5 Ya DisponibleSilverlight 5 Ya Disponible El día de hoy 09 de Diciembre 2011 ha sido liberada la nueva versión de Silverlight 5.  Esta versión final es la 5.0.61118. ¿Qué es Silverlight? Silverlight es...

Readmore

Silverlight Tour–Actualizado a Silverlight 5 RTWSilverlight Tour–Actualizado a Silverlight 5... Tengo el gusto de anunciarles que el Curso que Da La Vuelta al Mundo, el famoso Silverlight Tour, ha sido actualizado a la versión final de Silverlight 5. El Silverlight...

Readmore

Nueva carrera en Microsoft Virtual Academy: Windows Phone 7.1 (Mango)Nueva carrera en Microsoft Virtual Academy: Windows... Tengo el gusto de darles a conocer la disponibilidad de una nueva carrera en el Microsoft Virtual Academy (MVA): La carrera de Windows Phone 7.1 Mango. Esta es la descripción...

Readmore

Nueva carrera en Microsoft Virtual Academy: Silverlight 4Nueva carrera en Microsoft Virtual Academy: Silverlight... ¿Eres estudiante de Microsoft Virtual Academy (MVA)? Tengo el gusto de anunciarles oficialmente el lanzamiento de la nueva carrera de Silverlight 4 para esta plataforma educativa. La...

Readmore

Curso gratuito de Introducción a Silverlight 4 – 2da. ParteCurso gratuito de Introducción a Silverlight... Tengo el gusto de informarles que ya está disponible la segunda parte del Curso gratuito de Introducción a Silverlight 4 en Español, el cual ahora consta de un total...

Readmore

Rodrigo Díaz Concha Rss

Silverlight 4 Beta – Notificaciones

Posted on : 01-12-2009 | By : Rodrigo | In : Silverlight 4

Tags: , , ,

2

Silverlight 4 incorpora un mecanismo para notificar al usuario acerca de algún suceso ocurrido similar a cuando llega un nuevo correo en Outlook y que aparece la notificación en la esquina inferior derecha de nuestra pantalla.   En este artículo veremos a detalle esta nueva API de Notificaciones y cómo implementarla en nuestras aplicaciones.

El Proyecto

Crearemos un nuevo proyecto de Silverlight 4 en Visual Studio .NET 2010 Beta 2 y le pondremos el nombre Demo.SL4.Notificaciones, aceptando las opciones por default de crear un proyecto Web para poder probar la aplicación.  Además, configuraremos el proyecto de Silverlight para que la aplicación pueda ejecutar Fuera del Navegador.

Clase System.Windows.NotificationWindow

La clase NotificationWindow del espacio de nombres System.Windows es el punto de partida para crear notificaciones en nuestras aplicaciones.  El contenido de una notificación es establecida a través de la propiedad Content que es de tipo FrameworkElement, una de las clases principales en la jerarquía de clases de Silverlight y por tal motivo podemos establecer como contenido de la notificación cualquier elemento visual.

La característica de Notificaciones únicamente está disponible en Aplicaciones Fuera del Navegador (por lo menos en Silverlight 4 Beta)

Métodos Show() y Close()

Por otro lado, para mostrar una notificación ejecutamos el método Show(), el cuál recibe como parámetro un número expresado en milisegundos según el tiempo que desees que dure.  El siguiente código muestra la creación de una notificación, primero verificando que la aplicación esté ejecutando Fuera del Navegador:

if (Application.Current.IsRunningOutOfBrowser)
            {
                //Crea una nueva instancia de NotificationWindow
                NotificationWindow nw = new NotificationWindow();
                
                //Crea el contenido
                Grid grid = new Grid()
                {
                    Background = new SolidColorBrush(Colors.LightGray),
                    Width=400,
                    Height=100
                };
                TextBlock txt = new TextBlock()
                {   Text = DateTime.Now.ToString(),
                    HorizontalAlignment= System.Windows.HorizontalAlignment.Center,
                    VerticalAlignment= System.Windows.VerticalAlignment.Top,
                    FontSize=14
                };
                Button btn = new Button()
                {
                    Width = 100,
                    Height = 30,
                    Content = "Cerrar"
                };
                //Con el botón cerraremos la notificación
                btn.Click += (s, a) => nw.Close();

                grid.Children.Add(txt);
                grid.Children.Add(btn);

                //Establece el contenido
                nw.Content = grid;

                //Muestra la notificación durante 5 segundos
                nw.Show(5000);

            }

En el código estamos creando un Grid de color gris que nos servirá de contenedor para un TextBlock que mostrará la fecha y hora actual, y de un botón que nos servirá para cerrar la notificación en cuestión a través del método Close()

Nota: La documentación de Silverlight 4 Beta establece que los eventos que ocurren en el contexto de la notificación no se consideran como iniciados por el usuario, por lo que no podras ejecutar código que así lo requiera (OpenFileDialog, SaveFileDialog y usar el Portapapeles son un buen ejemplo de esto), no obstante, esto es posible.  No estoy seguro si esto cambie en la versión final de Silverlight 4.

El resultado:

image

Como podemos apreciar en la anterior figura, las notificaciones aparecerán en la esquina inferior derecha del monitor primario que tengas configurados, a una distancia de –44,-44 pixeles de distancia de la esquina; ese es el espacio vacío que se ve a la derecha y abajo de la notificación.

También podemos darnos cuenta que el área para la notificación no es más que un lienzo de 400 x 100 pixeles; y tu contenido no deberá rebasar este tamaño establecido de manera predeterminada.

Evento Closed

La clase NotificationWindow expone el evento Closed, el cual se dispara cuando cierras la notificación explícitamente usando el método Close() o cuando el tiempo en milisegundos especificado en el método Show() se ha cumplido.  En la aplicación de ejemplo que aquí desarrollamos manejamos el evento para mostrar en un ListBox que una notificación ha sido cerrada; además, las notificaciones se están creando cada 10 segundos.

Resultado

image

Puedes descargar el código aquí

Puedes ver la demo en vivo aquí (requiere Silverlight 4 y ejecutar la aplicación Fuera del Navegador)