Inicio > Ejemplos, Expression, Expression 2, Expression Blend, silverlight > [Silverlight] Mostrar RSS en una aplicación de Silverlight

[Silverlight] Mostrar RSS en una aplicación de Silverlight

Primero es crear un proyecto desde Expression Blend 2 de tipo Silverlight 2:

image

Luego Agregamos una imagen que será el fondo de donde se mostrara nuestras RSS, la imagen puede ser la que quieran, o en su caso darle diseño al control que muestra el contenido de Silverlight. Después que agregamos la imagen le quitamos el fondo al Grid, para que nuestro control se vea más o menos así:

image

Bien, a esto agregamos 2 TextBlock y un TextBox, con los siguientes nombres:

Control Nombre
TextBlock Titulo
Texblock Fecha
TextBox Contenido

Ya que tenemos nuestro “Diseño”, vamos a abrir el mismo proyecto desde Visual Studio 2008, abrimos la página xaml.cs para trabajar en ella y lo primero que hacemos el agregar los nombres de espacios que vamos a ocupar que son los siguientes:

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.ServiceModel;
using System.ServiceModel.Syndication;
using System.Net;

Luego en la página xaml.cs declaramos el url de RSS con la siguiente instrucción:

string feedUrlTemplate = "https://mspnor.wordpress.com/feed/rss/";

Ya con esto necesitamos un método que lea nuestros RSS, el cual declaramos y hacemos uso de un WebClien y creamos una nueva URI

     
private void CargarRSS(string uri)
{
    WebClient wb = new WebClient();
    wb.OpenReadCompleted += new OpenReadCompletedEventHandler(wb_OpenReadCompleted);

    Uri feedUri = new Uri(uri, UriKind.Absolute);
    wb.OpenReadAsync(feedUri);
}

Ahora lo interesante viene en el evento OpenReadCompleted del webClient, el código es el siguiente:

void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    if (e.Error != null)
    {
        this.Contenido.Text = "Error al cargar el XML del feed intentelo de nuevo";
        return;
    }
    using (System.IO.Stream stream = e.Result)
    {
        SyndicationFeed feed;
        using (System.Xml.XmlReader reader = System.Xml.XmlReader.Create(stream))
        {
            feed = SyndicationFeed.Load(reader);

            SyndicationItem item = feed.Items.First();

            this.Fecha.Text = item.PublishDate.ToString();
            this.Titulo.Text = item.Title.Text;
            this.Contenido.Text = item.Summary.Text;
        }
    }
}

Aquí hacemos uso de nuevo metodo para obtener los RSS a de una página y es la clase SyndicationFeed, y SyndicationItem como se pueden dar cuenta esto es muy sencillo esto es todo lo que necesitamos para tener RSS en una aplicación Silverlight. En el próximo post veremos como agregar esta aplicación a un WebSlice.

Se me olvidaba, El metodo cargarRSS tenemos que colocarlo en la sobrecarga de la página:

public Page()
{
    InitializeComponent();
    CargarRSS(feedURL.Trim());            
}

y si ejecutamos esto se ve más o menos así:

image

Aquí hay un pequeño detalle, que por el momento no existe un control en Silverlight que muestre contenido HTML como tal, aunque ya se esta trabajando en esto, e inlcuso existen algunos proyectos betas en CodeProject, aun no, pero vaya que esto se puede mejorar en muy poco tiempo, así que aquí les dejo este post, espero que les ayude y no duden en comentar y votar por el Blog.

 

Saludos!

Etiquetas de Technorati: ,,
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: