Noticias MSDN actualizada a Mango


Mango

He actualizado recientemente la aplicación de demostración que uso en mis tutoriales de WP7 para aprovechar unas pocas de las más de 500 novedades que trae Mango. Dentro de poco estará disponible en el Marketplace, aquí os adelanto los cambios que he hecho por ahora.

 

Actualización a 7.1

Lo primero que debemos hacer es actualizar el proyecto al nuevo SDK. Basta pulsar con el botón derecho sobre el proyecto y obtendremos la opción que necesitamos:

Una vez realizada la actualización ya podemos realizar los cambios necesarios en nuestra aplicación.

¿Adormecida o Deshidratada?

El nuevo modelo de ejecución de WP7.5 contempla una nueva posibilidad al volver a nuestra aplicación, puede que la aplicación no vuelva “deshidratada” (tombstoning) sino en un estado latente aún en memoria, por lo tanto no hará falta recuperar los datos desde el PhoneApplicationService.Current.State y podremos continuar la ejecución como si nada hubiera pasado.
Execution Model Diagram for Windows Phone 7.5

Para saber si la aplicación se debe recuperar o no basta con mirar la propiedad IsApplicationInstancePreserved del evento de activación. En el caso de la aplicación de ejemplo no hace falta mirar esta propiedad, pues ya mirábamos si el ViewModel era válido o no.

Compartir

Incluir funcionalidad para las redes sociales se complica un poco si lo queremos hacer usando las API de cada red, pues debemos pedir permiso, abrirnos una cuenta de desarrollador y gestionar la comunicación (login, datos, etc…) con la interfaz de cada red. Como ya os conté en un post anterior, Mango incorpora una novedad que nos facilitará mucho la vida: la tarea ShareLinkTask, con la que podremos en un par de líneas compartir cualquier información en todas las redes que tenga el usuario configuradas en el teléfono, en nuestro código se ve así:

new ShareLinkTask()
{
    LinkUri = new Uri( rss.Link),
    Message = HtmlStripper.HtmlToPlainText(rss.Description),
    Title = rss.Title
}.Show();

Texto rico rico

En la página principal tenemos un apartado “Acerca de…” que indica algunos datos sobre la aplicación. Para mostrar el texto, en la versión anterior estaba escrita dentro de etiquetas TextBlock en un StackPanel, en el que se iban colocando uno sobre el otro los bloques de texto.

Ahora tenemos una mejor opción para presentar texto, el control RichTextBox que nos permitirá formatear, añadir imágenes y representar hiperenlaces dentro del texto:

<controls:PanoramaItem Header="Acerca de..." >
    <StackPanel>
        <RichTextBox IsReadOnly="True" Background="Transparent">
            <Paragraph TextAlignment="Justify">Esta es una aplicación no oficial para la
            </Paragraph>
            <Paragraph TextAlignment="Center">
            <Hyperlink NavigateUri="http://msdn.microsoft.com/es-ES/" 
                       TargetName="_blank">http://msdn.microsoft.com/es-ES/
            </Hyperlink>
            </Paragraph>
            <Paragraph TextAlignment="Justify">Los datos mostrados en la aplicación son 
            </Paragraph>
            <Paragraph></Paragraph>
            <Paragraph TextAlignment="Justify">Desarrollada por
                    Juan Manuel Servera
                 en Marzo de 2011 como ejemplo del tutorial de aplicaciones de WP7.
            </Paragraph>
            <Paragraph TextAlignment="Center">
                <Hyperlink NavigateUri="https://jmservera.wordpress.com"
                           TargetName="_blank">https://jmservera.wordpress.com
                </Hyperlink>
            </Paragraph>
        </RichTextBox>
    </StackPanel>
</controls:PanoramaItem>

Para que los hiperenlaces funcionen es importante que el control esté en modo lectura (IsReadOnly=”True”) y que los enlaces tengan un TargetName (“_blank” en nuestro caso).

Podéis descargar el código fuente completo de la aplicación en Codeplex.

Anuncios

  1. Cristian Centeno

    Hola sabes necesito una gran ayuda y es que necesito agregar otro menú a la app como podría agregarlo? me refiero a este:

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
    base.OnNavigatedTo(e);
    int index = int.Parse(this.NavigationContext.QueryString[“id”]);
    string collectionName = this.NavigationContext.QueryString[“collName”];

    if (string.CompareOrdinal(collectionName, “Noticias”) == 0)
    {
    if (App.ViewModel != null && App.ViewModel.Noticias != null && App.ViewModel.Noticias.Count > 0)
    {

    this.DataContext =
    App.ViewModel.Articulos[index];
    }
    }
    else
    {
    if (App.ViewModel != null && App.ViewModel.Articulos != null && App.ViewModel.Articulos.Count > 0)
    {

    this.DataContext =
    App.ViewModel.Articulos[index];
    }

    }
    }
    Ubicado en RssDetailPage.xaml.cs y

    private void Button_Click(object sender, RoutedEventArgs e)
    {
    Control c = sender as Control;
    if (c != null)
    {
    ElementoEntradaVideo elemento = c.DataContext as ElementoEntradaVideo;
    if (elemento != null)
    {
    NavigationService.Navigate(new Uri(
    string.Format(“/DetalleVideo.xaml?id={0}”,
    App.ViewModel.Videos.IndexOf(elemento)), UriKind.Relative));
    }
    else
    {
    ElementoEntradaRss element = c.DataContext as ElementoEntradaRss;

    if (element != null)
    {
    ObservableCollection coll;
    string collName;

    if (App.ViewModel.Noticias.Contains(element))
    {
    coll = App.ViewModel.Noticias;
    collName = “Noticias”;
    }
    else
    {
    coll = App.ViewModel.Articulos;
    collName = “Articulos”;
    }

    NavigationService.Navigate(new Uri(
    string.Format(“/RssDetailPage.xaml?id={0}&collName={1}”,
    coll.IndexOf(element), collName), UriKind.Relative));
    }
    }
    }
    }

    Como añadiría otro menú y cuando le de click al elemento se dirija hacia el. Saludos.

    Tus entradas han sido de mucha ayuda.

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