MSDN España

Noticias, avisos, reflexiones... del equipo que hay detrás de MSDN en España... también tendremos alguna que otra firma invitada :)

Windows 8 Tips & Tricks. Implementar el contrato Share como fuente de datos (XAML/C#)

[Nota: Este artículo pertenece a nuestra serie de Windows 8 Tips & Tricks]

Windows 8 permite que las aplicaciones compartan información unas con otras de forma homogénea mediante el Charm de Share. En este Tips&Tricks veremos cómo implementarlo en nuestras aplicaciones.

 

[Channel9YouTube] 

Para implementar la compartición lo primero que tenemos que hacer es decirle a nuestra aplicación que escuche el evento DataRequested de DataTransferManager. Este evento será lanzado cada vez que el usuario active el Charm de compartir y le pedirá a nuestra aplicación el contenido. Un buen sitio para subscribirnos al evento es en el método “OnNavigatedTo”, ya que de esta forma nos subscribiremos siempre que el usuario llegue a la página.

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    DataTransferManager.GetForCurrentView().DataRequested 
        += dataTransferManager_DataRequested;
}

Este método será el encargado de proporcionarle al sistema la información que deseamos compartir, introduciéndola en el DataRequest. En este caso vamos a compartir una noticia en formato HTML, por lo que damos un Título, una Descripción e introducimos el código HTML mediante el método SetHtmlFormat:

void dataTransferManager_DataRequested
    (DataTransferManager sender, DataRequestedEventArgs args)
{
    var requestedData = args.Request;
    requestedData.Data.Properties.Title = _noticia.Título;
    requestedData.Data.Properties.Description = _noticia.Subtítulo;
    requestedData.Data.SetHtmlFormat(NoticiaAHtml(_noticia));
}

En nuestro caso la aplicación está desarrollada en XAML, por lo que no disponemos del código HTML, así que hemos diseñado una sencilla función para convertir noticias a código HTML. Esta función sólo escribe explícitamente el párrafo que compartimos, el resto del código HTML lo generamos de manera automática haciendo uso del método CreateHtmlFormat de la clase HtmlFormatHelper:

private Func<Noticia, string> NoticiaAHtml = x => 
    HtmlFormatHelper.CreateHtmlFormat("<p>" + 
    x.Subtítulo + "<img src=\"" + x.Imagen + "\">.</p>");

Con esto ya tenemos implementado el contrato Share como fuente de datos y nos permitirá compartir nuestro contenido con cualquier aplicación que sea capaz de recibir HTML.

Si tienes alguna duda, recuerda que tienes a tu disposición el foro de desarrollo de aplicaciones para Windows 8 en castellano, donde podrás compartir tus conocimientos con la comunidad de desarrolladores y encontrar ayuda para resolver tus dudas técnicas, y una Introducción al desarrollo de aplicaciones para Windows 8.

También puedes estar al día de todas las novedades a través de nuestros rincones en las redes sociales:

Un saludo,

      Pablo Carballude

Blog: formulario de comentarios de publicación (CAPTCHA)