Sin categoría

Windows Phone | Diferentes plantillas de elementos en LongListSelector con DataTemplateSelector

Escenario

Puede darse el caso en el que tengamos que aplicar diferentes plantillas a los elementos de una misma lista, en este artículo un LongListSelector. Para ello, tenemos varios métodos como por ejemplo usar Converters e ir aplicando distintos valores de propiedades según convenga (Lo explicaré en un próximo artículo), pero esto tiene un inconveniente y es que tendríamos que crear tantos converters como propiedades distintas queramos cambiar.

TemplateSelector

 

Solución

Bueno, ¿y cuál es la solución? Pues no es otra que hacer un uso un poco más avanzado de las herramientas de las que disponemos y crear un DataTemplateSelector que no es más que un “control” que nos permite crear un selector. Así pues, comencemos a ver cómo irlo creando paso a paso.

NOTA: En WPF y en Windows 8 se puede usar sin necesidad de este Workaround

 

Los datos

Bueno, para empezar debemos definir los datos con los que vamos a trabajar para poder determinar cuál va a ser el elemento diferenciador entre ellos. En este caso, he usado la lista de Speakers de las “Christmas Windows Phone Sessions” y les he añadido una propiedad “Type” que define el área a la que pertenecen entre Business, Developer y Designer. Así pues, tenemos a Alejandro Campos Magencio en el área Business, a mi como Designer y el resto como Developer. Y lo que quiero es diferenciarlos por el color de fondo de su nombre tal y como se muestra en la imagen de “resultado”.

El modelo que he creado es el siguiente:

public class SpeakerViewModel

{

    public int Id { get; set; }

    public string Type { get; set; }

    public string Title { get; set; }

    public string ProfilePhoto { get; set; }

}

 

Todos los Speakers los estoy recogiendo en una ObservableCollection<SpeakerViewModel> que tengo en mi ViewModel principal para, de esta forma, fácilmente pasárselo a la página de detalles (en la que no vamos a entrar ahora)

public void LoadSpeakers()

{

    this.Speakers.Add(new SpeakerViewModel() { Id = 1, Title = "Alejandro Campos Magencio", Type = "Business", ProfilePhoto = "/Assets/Speakers/Alejandro.jpg" });

    this.Speakers.Add(new SpeakerViewModel() { Id = 2, Title = "Josué Yeray", Type = "Developer", ProfilePhoto = "/Assets/Speakers/JosueYeray.jpg" });

    this.Speakers.Add(new SpeakerViewModel() { Id = 3, Title = "Roberto Luis Bisbé", Type = "Developer", ProfilePhoto = "/Assets/Speakers/RobertoLuisBisbe.jpg" });

    this.Speakers.Add(new SpeakerViewModel() { Id = 4, Title = "Javier Suárez Ruiz", Type = "Developer", ProfilePhoto = "/Assets/Speakers/JavierSuarez.jpg" });

    this.Speakers.Add(new SpeakerViewModel() { Id = 5, Title = "Rafa Serna", Type = "Developer", ProfilePhoto = "/Assets/Speakers/RafaSerna.jpg" });

    this.Speakers.Add(new SpeakerViewModel() { Id = 6, Title = "Santiago Porras", Type = "Designer", ProfilePhoto = "/Assets/Speakers/SantiagoPorras.jpg" });

 

}

 

Además de estos datos, que son los que se muestran al ejecutar la aplicación, como estamos diseñando cómo se verán los elementos querremos verlos en tiempo de edición, así que nos crearemos los Mockups dentro de un fichero XAML que referenciaremos en nuestra poniendo en la cabecera su referencia.

Referencia en la vista

d:DataContext="{d:DesignData SampleData/MainViewModelSampleData.xaml}"

 

Datos de ejemplo

<vm:MainViewModel.Speakers>

    <vm:SpeakerViewModel Id="1" Title="Alejandro Campos Magencio"   Type="Business" ProfilePhoto="/Assets/Speakers/Alejandro.jpg"/>

    <vm:SpeakerViewModel Id="2" Title="Josué Yeray"   Type="Developer" ProfilePhoto="/Assets/Speakers/JosueYeray.jpg"/>

    <vm:SpeakerViewModel Id="3" Title="Roberto Luis Bisbé" Type="Developer" ProfilePhoto="/Assets/Speakers/RobertoLuisBisbe.jpg"/>

    <vm:SpeakerViewModel Id="4" Title="Javier Suárez Ruiz"  Type="Developer" ProfilePhoto="/Assets/Speakers/JavierSuarez.jpg"/>

    <vm:SpeakerViewModel Id="5" Title="Rafa Serna"  Type="Developer" ProfilePhoto="/Assets/Speakers/RafaSerna.jpg"/>

    <vm:SpeakerViewModel Id="6" Title="Santiago Porras"   Type="Designer" ProfilePhoto="/Assets/Speakers/SantiagoPorras.jpg"/>

</vm:MainViewModel.Speakers>

NOTA: Si hemos usado una plantilla con datos al crear la aplicación (Windows Phone Databound App, Windows Phone Pivot App o Windows Phone Panorama App) dispondremos de un archivo “SampleData/MainViewModelSampleData” que ya está asociado a la vista MainPage.xaml y que podremos usar para realizar esta acción.

 

Una vez hayamos hecho esto y teniendo un LongListSelector enlazado a los datos, podremos ver que nos aparecen elementos en la Vista Diseño, con lo que podremos darle color a los elementos.

 

Implementar la clase DataTemplateSelector

Ahora que ya tenemos los datos, debemos crear la base del selector de plantillas que debe heredar de “ContentControl” que se encuentra dentro del espacio de nombres “System.Windows.Controls”.

public abstract class DataTemplateSelector : ContentControl

{

    public virtual DataTemplate SelectTemplate(object item, DependencyObject container)

    {

        return null;

    }

 

    protected override void OnContentChanged(object oldContent, object newContent)

    {

        base.OnContentChanged(oldContent, newContent);

 

        ContentTemplate = SelectTemplate(newContent, this);

    }

}

Como se puede apreciar, hay dos métodos virtuales que debemos implementar al heredar de ContentControl

  • SelectTemplate: Selecciona una plantilla (De momento lo dejamos como null porque lo implementaremos más adelante en otra clase).
  • OnContentChanged: Define la plantilla que se muestra al cambiar el contenido, cosa que sucede cuando se rellenan los datos con el Binding. Esta es la que usaremos para nuestro ejemplo.

 

Implementar la clase que gestione los elementos, ItemDataTemplateSelector

Continuamos con el trabajo creando la clase que realmente va a realizar el cambio de plantilla atendiendo al campo “Type” del modelo SpeakerViewModel.

Esta clase, que he llamado ItemDataTemplateSelector, hereda de DataTemplateSelector y contiene, una propiedad por cada diferente plantilla y la sobreescritura del método SelectTemplate que atiende al campo “Type” para definir la plantilla que se ha de mostrar.

public class ItemDataTemplateSelector : DataTemplateSelector

{

    public DataTemplate Designer

    {

        get;

        set;

    }

 

    public DataTemplate Developer

    {

        get;

        set;

    }

 

    public DataTemplate Business

    {

        get;

        set;

    }

 

    public override DataTemplate SelectTemplate(object item, DependencyObject container)

    {

        SpeakerViewModel speaker = item as SpeakerViewModel;

        if (speaker != null)

        {

            if (speaker.Type == "Designer")

                return Designer;

            else if (speaker.Type == "Developer")

                return Developer;

            else 

                return Business;

        }

 

        return base.SelectTemplate(item, container);

    }

}

 

Usar las diferentes plantillas gestionadas por ItemDataTemplateSelector

Ya sólo nos queda crear las plantillas e indicarle al LongListSelector que haga uso de ellas.

En primer lugar, tenemos que definir el espacio de nombres en el que hemos incluido el selector de plantillas ItemDataTemplateSelector que, en mi caso, he puesto en una carpeta Helpers. Así pues, en la cabecera de la vista donde tengamos el LongListSelector, debemos añadir la siguiente línea:

xmlns:local="clr-namespace:Sample_2.Helpers"

Nótese que “local” puede ser sustituido por lo que queráis, pero tenéis que tenerlo en cuenta más adelante.

El siguiente paso, es crear las plantillas dentro del LongListSelector, haciendo referencia a las propiedades correspondientes a cada una de las plantillas que definimos en ItemDataTemplateSelector, como por ejemplo “local:ItemDataTemplateSelector.Developer”.

<phone:LongListSelector Grid.Row="1" ItemsSource="{Binding Speakers}" LayoutMode="Grid" GridCellSize="180,180">

    <phone:LongListSelector.ItemTemplate>

        <DataTemplate>

            <local:ItemDataTemplateSelector Content="{Binding}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">

                <local:ItemDataTemplateSelector.Developer>

                    <DataTemplate>

                        <Grid Height="180" Margin="5" Width="180" Background="#FFE00109">

                            <Border BorderBrush="Black" Height="50" VerticalAlignment="Bottom" Background="#FFE00109">

                                <TextBlock Text="{Binding Title}" Style="{StaticResource PhoneTextExtraLargeStyle}" Foreground="White" FontSize="24" VerticalAlignment="Center"/>

                            </Border>

                        </Grid>

                    </DataTemplate>

                </local:ItemDataTemplateSelector.Developer>

 

                <local:ItemDataTemplateSelector.Designer>

                    <DataTemplate>

                        <Grid Height="180" Margin="5" Width="180" Background="#FF009045">

                            <Border BorderBrush="Black" Height="50" VerticalAlignment="Bottom" Background="#FF009045">

                                <TextBlock Text="{Binding Title}" Style="{StaticResource PhoneTextExtraLargeStyle}" Foreground="White" FontSize="24" VerticalAlignment="Center"/>

                            </Border>

                        </Grid>

                    </DataTemplate>

                </local:ItemDataTemplateSelector.Designer>

                <local:ItemDataTemplateSelector.Business>

                    <DataTemplate>

                        <Grid Height="180" Margin="5" Width="180" Background="#FF7b057e">

                            <Border BorderBrush="Black" Height="50" VerticalAlignment="Bottom" Background="#FF7b057e">

                                <TextBlock Text="{Binding Title}" Style="{StaticResource PhoneTextExtraLargeStyle}" Foreground="White" FontSize="24" VerticalAlignment="Center"/>

                            </Border>

                        </Grid>

                    </DataTemplate>

                </local:ItemDataTemplateSelector.Business>

            </local:ItemDataTemplateSelector>

        </DataTemplate>

    </phone:LongListSelector.ItemTemplate>

</phone:LongListSelector>

Llegados a este punto, ya tenemos todo preparado para ejecutar el proyecto y ver el resultado.

TemplateSelector

 

Estructura final del proyecto

La estructura final del proyecto, debería contener algo como lo que muestro a continuación, con las dos clases que hemos creado para la selección de la plantilla, los ViewModel necesarios, los datos de ejemplo y la vista principal MainPage.xaml.

Solution

 

Código

Lo pondré en un próximo artículo con los recursos del Webcast en el que hablé de esto, siendo la solución que colgaré, más avanzada y con un aspecto algo diferente…

result-enhanced

 

Enjoy it!

Windows Phone | Disponibles las nuevas versiones de los emuladores (Update 2 y Update 3)

En este nuevo año, Microsoft ha liberado actualizaciones de diferentes productos y, para los desarrolladores de Windows Phone no podía faltarnos la actualización de los emuladores.

  • Desde el 2 de enero está disponible el Update 2 : Preparado para ambientes que sólo tengan Visual Studio 2013 RTM
  • Desde el 6 de enero está disponible el Update 3 : Corresponden a Windows Phone Update 3 e incluso incluye un emulador con la resolución 1080p

Windows-Phone-Update-Emulators

En Verde UPDATE 2

En magenta UPDATE 3

NOTA: Estas actualizaciones requieren Visual Studio 2012 Update 3 o (b) RTM de Visual Studio 2013, con el SDK 8.0 de Windows Phone instalado.

¿Es importante aplicar estas actualizaciones? Desde mi humilde opinión, SÍ, para poder ofrecer aplicaciones adaptadas a las nuevas actualizaciones de Windows Phone y poder aportar a los usuarios la mejor experiencia posible. Además, como ya he comentado en otras ocasiones, cada actualización incluye una serie de mejoras y fixes absolutamente necesarios para que nuestras Apps aporten una calidad excelente.

Todas las descargas están disponibles en este enlace http://developer.windowsphone.com/en-us/downloadsdk

Windows Azure | Disponible una nueva versión de Windows Azure Storage Client Library

El pasado 4 de enero, Microsoft liberó la nueva versión de la librería de Windows Azure Storage (3.0.2) y, cómo no, ésta está disponible en nuget.

Para instalarla, sólo tenemos que abrir el Package Manager Console y ejecutar el siguiente comando de PowerShell.

PM> Install-Package WindowsAzure.Storage

Install-Windows-Azure-Storage_thumb5

 

Esta acción actualizará la librería de Windows Azure Storage, no así el resto de componentes del SDK de Windows Azure.

Y os preguntaréis, ¿es una buena práctica actualizar sólo una librería cuando el resto se mantiene en la misma versión? La respuesta, al menos en este caso de la plataforma en la nube de Microsoft, es que sí, dado que cada versión incluye fixes y nuevas funcionalidades para adaptarse a la constante actualización, mejora y adición de componentes de Windows Azure. Veamos qué incluye esta actualización:

  - All (WP): Fixed an issue causing ArgumentOutOfRangeException in many APIs.

  - Queues: Fixed an issue causing NullReferenceException when trying to re-create an existing queue.

  - Tables: Fixed an issue with TableServiceContext causing NullReferenceException when the error response cannot be parsed.

  - Tables (RT): Do not allow users to set JsonFullMetadata format on RequestOptions in RT, because JSON is not supported on the RT library yet.

 

Como se puede observar, han incluído 4 fixes que nos ayudarán a crear soluciones más robustas. Aquí podéis ver todas las notas de las versiones de la librería Windows Azure Storage.

Espero que os actualicéis. Enjoy it! Sonrisa

ASP.NET MVC5 | Cómo instalar en Visual Studio 2012

Desde el pasado octubre de 2013 ya está disponible ASP.NET MVC5 la nueva versión de framework de desarrollo web que implementa el patrón MVC (Model-View-Controller).

Esta nueva versión viene incluida en Visual Studio 2013, con lo que los que ya dispongan de la última versión del popular IDE de Microsoft, podrán beneficiarse de esta nueva versión para desarrollar sitios web. Pero si aún no habéis podido de disfrutar de Visual Studio 2013 y dispongáis de la versión 2012, ¿cómo podéis crear sitios web haciendo uso de ASP.NET MVC5? La respuesta es muy sencilla gracias a NUGET.

Lo primero es crear un proyecto con ASP.NET MVC4 que posteriormente vamos a actualizar a ASP.NET MVC5

MVC4

 

El siguiente paso es abrir Package Manager Console como se muestra en la imagen a continuación:

Package-Manager-Console

 

Una vez abierta la consola, hay que ejecutar el siguiente comando:

Install-Package Microsoft.AspNet.Mvc -Version 5.0.0

Install-ASP-NET-MVC5

 

Y… ya está, nuestro proyecto ha sido convertido a ASP.NET MVC5

MVC5

 

En este enlace podéis obtener más información sobre ASP.NET MVC5

Hyper-V & VMWare | Cómo instalar VMWare en una máquina con Windows 8 con Hyper-V

En estos días me he visto en la necesidad de crear una máquina virtual para trabajar con Windows Phone pero como ya sabréis, esto me imposibilita a usar el emulador de Windows Phone por eso de la virtualización del mismo… o no, ya que existe un workaround para utilizar el emulador de Windows Phone 8 en una máquina virtual. Aquí os dejo el enlace.

Ahora viene el problema, si intentáis instalar VMWare en una máquina con Windows 8 que tenga Hyper-V activado, recibiréis el mensaje que muestro en la imagen y que os impedirá instalarlo (absurdo desde mi punto de vista) pero otra vez… quien hizo la ley hizo la trampa.

VMWare-Hyper-V

 

Workaround

El paquete de instalación de VMWare detecta si tenéis Hyper-V activado y es lo que frena el proceso pero… ¿Hyper-V realiza esa comprobación? La respuesta es NO, así que para instalar VMWare, tan sólo tendremos que realizar los siguientes pasos:

  • Ir al Panel de control –> Programas –> Activar o Desactivar características de Windows
  • Desactivar Hyper-V
  • Hyper-V

  • Reiniciar PC
  • Instalar VMWare
  • Ir al Panel de control –> Programas –> Activar o Desactivar características de Windows
  • Activar Hyper-V
  • Reiniciar
  • Con esto, tendremos instalados y activos ambos sistemas y podremos disfrutar de las ventajas de los dos.

    Pero nos encontramos el siguiente problema, según he investigado esto sólo funcionará si el SO Guest es de 32 bits… con lo que si queremos ejecutar una máquina virtual de VMWare con un SO de 64 bits… obtendremos un mensaje de error indicándonos nuevamentre que VMWare no es compatible con Hyper-V.

    Not-compatible

    Workaround+

    Según he investigado (y probado) lo resolvemos ejecutando el siguiente comando en una consola (con persmisos de administrador) para desactivar el rol de Hyper-V.

    bcdedit /set hypervisorlaunchtype off

    Es necesario reiniciar el PC.

     

    Si queremos habilitar de nuevo el rol de Hyper-V, podremos hacerlo con el siguiente comando.

    bcdedit /set hypervisorlaunchtype auto

    Es necesario reiniciar el PC

     

    Enjoy it! Sonrisa

    Off Topic | Resumen de 2013, expectativas de 2014

    Hoy termina un año que podría catalogar como el más apasionante de mi vida en todos los sentidos Como todos he tenido malos momentos pero, los buenos han sido excepcionales, comenzando por el nacimiento de mi pequeñita Adara y acabando por el nacimiento de nuevas comunidades de usuarios en las que estoy inmerso como WPSUG y Comunidad Office365. Para ilustrarlo mejor, lo contaré con imágenes.

     

    Empezando el año con buen pie

    Empieza 2013 con muchas expectativas, un nuevo año bajo la tutela del maestro Alberto Díaz al que le debo mucho. Y para empezar bien el año… qué mejor que con mi mujer que tanto me aguanta.

    WP_20130101_002

     

    Primeros pasos

    En los primeros meses del año no hubo nada muy reseñable, salvo algún Webcast con algún que otro contratiempo que me llevó a trabajar a “dos portátiles” en modo pulpo.

    Modo Pulpo On

     

    Carnavales

    Como no podía ser de otra forma… soy chicharrero y el Carnaval lo llevamos dentro.

    WP_20130212_013

     

    MAP 2013

    En marzo recibí la grata noticia de ser nombrado MAP 2013, un reconocimiento que me animó a trabajar aún más duro y ayudar más aún a las comunidades de desarrolladores tanto locales como online.

    MAP

    Megathon Windows 2013

    Y llegó el Megathon Windows 2013… donde como siempre la liamos en TenerifeDev con una organización de lujo con Alberto Díaz, David Rodríguez y José Fortes y la vuelta del hijo pródigo Josué Yeray tal y como quedó plasmado en este gran vídeo

    DSC_0070

     

    El resultado no pudo ser mejor, la aplicación ganadora en Tenerife, TripNative, la consideramos adecuada para optar a un premio mucho mayor y, tras reunirnos los coordinadores de TenerifeDev con sus creadores para ayudarles a pulir la idea, finalmente la aplicación fue enviada para ser valorada por AppCampus. Nos alegramos de saber que no sólo consiguió entrar en el programa con el consiguiente e importante premio económico sino que ya el proyecto está en marcha. Enhorabuena chicos!.

    DSC_0272

     

    Nokia Developer Champion

    En mayo llegó otro reconocimiento inesperado, fui nombrado Nokia Developer Champion, WOW!! Sin duda es un gran premio.

    NDC Logo

     

    Cambio de trabajo

    Sin duda una difícil decisión, pero la oportunidad de trabajar con SolidQ es difícilmente rechazable, así que salí de la empresa en la que trabajaba codo con codo con el maestro Alberto Díaz para engrosar las filas de esta multinacional repleta de grandes profesionales de talla mundial. A mis compañeros de General de Software los echo de menos cada día así que debo hacer una mención especial para ellos, grandes profesionales con los que inicié mi andadura laboral hace 12 años, con los que me volví a encontrar y que me ayudaron a crecer como profesional. Espero conseguir en SolidQ al menos una pequeña parte de la familiaridad que he dejado atrás.

     

    solidq-logo

     

    TLPInnova en Tenerife Lan Party

    Un año más, TenerifeDev participó con la Tenerife Lan Party pero esta vez fuimos más allá y no nos conformamos sólo con dar charlas sino que además organizamos un hackathon de apps que tuvo una gran acogida. Además, como colofón, tuvimos la oportunidad de conocer a Juan Verde, asesor de Barack Obama.

    Sin duda, esta edición de la Tenerife Lan Party fue inolvidable, con unas finales oficiales del juego LoL (League of Legends), la presencia de Juan Verde, récord de participación (lleno a reventar como siempre), más apoyo en la zona empresarial… Cada año se supera esta organización. Mi enhorabuena para ellos.

    WP_20130718_009

     

    Comunidad Office 365

    Nace la Comunidad Office 365 en la que participo como designer. Una comunidad conformada por grandes y reconocidos expertos en diferentes ámbitos como Pilar Palel, Alberto Pascual, Rafael Ansino, Peter Díaz, Alberto Díaz, Adrián Díaz y Juan Carlos González (creo que no me dejo a ninguno).

    Logo-512x322

     

    Iberian SharePoint Conference 2013

    Y llegó por fin la conferencia de las conferencias… Tras meses y meses de preparación, búsqueda de patrocinadores, búsqueda de speakers, búsqueda de lugar para el evento, diseños, logos, merchandising, … por fin se materializó el evento en Madrid en el que, no sólo tuve el placer de ayudar en la organización del evento sino que además también realicé una sesión como speaker (con la sala a reventar) junto a Teresa Cebrián, toda una maestra. La sesión no salió todo lo bien que deseábamos porque tuvimos el honor de sufrir la “novatada” de quedarnos sin red y tuvimos que simular el resultado final de la demo. Bueno, el próximo año iremos preparados para poder dejar boquiabiertos a los asistentes (Prometido)

    Mi valoración final es que el evento fue excelente, un 9,9 de nota (para tener margen de mejora jejeje)

    logo_512

    IMG_7480

     

    Codemotion Madrid 2013

    La organización de Codemotion Madrid 2013 me brindó una nueva oportunidad de hablar ante todos vosotros en vivo y en directo, otra vez en Madrid, pero en esta ocasión la temática era Windows Phone, más concretamente introducción al diseño de Apps para Windows Phone bajo el título “Windows Phone: be modern, be cool”. Una gran experiencia que espero repetir.

    WP_20131019_17_35_40_Pro

     

    Christmas Windows Phone Sessions

    En diciembre, pudísteis disfrutar de las Christmas Windows Phone Sessions, una serie de sesiones sobre Windows Phone en las que tuve la oportunidad de hablaros en dos ocasiones sobre diseño de Apps para Windows Phone. Compartí cartel junto a Alejandro Campos Magencio del equipo de DPE de Microsoft, Josué Yeray, Roberto Luis Bisbé, Rafa Serna y Javier Suárez Ruiz, un equipazo de speakers/mentores de los que espero que hayáis aprendido porque, sin duda, yo sí que lo hice.

    Christmas-Windows-Phone-Sessions-Poster

     

    Mobile App Acceleration Camp (MAAP)

    Entretanto y de forma inesperada, fui invitado a formar parte del equipo de mentores para el Mobile App Acceleration Camp y tratar de ayudar a los equipos elegidos a mejorar sus conceptos de Apps para Windows Phone y así ganar puntos de cara a tener la posibilidad de entrar en el programa de AppCampus (de nuevo en el camino). La experiencia fue genial y muy enriquecedora dado que pude conocer a otros profesionales incluyendo a la organizadora del evento, Sonia Marzo, responsable de Emprendedores y Centros de Innovación en Microsoft, gran persona y profesional. Suerte a todos los equipos que finalmente optan a entrar en el programa de AppCampus.

    WP_20131213_001

     

    WPSUG

    Bueno, como colofón a este año laboral, Josué Yeray ha encabezado un gran equipo en el que he sido incluido junto a Rafa Serna y Javier Suarez Ruiz y juntos hemos creado WPSUG (Windows Phone Spanish User Group) desde el que os animamos a que participéis, ya sea por Twitter, LinkedIn, Facebook o en Google+.

    Logo-512

    Ayer hicimos la apertura oficial con este hangout. Espero que lo disfrutéis.

     

    NACIMIENTO DE MI HIJA

    Para terminar, dejo lo mejor que me ha pasado este año y que no es otra cosa que la llegada al mundo de mi hija Adara. Con ella, me despido de este año y espero que el 2014 comience con más fuerza ya que tengo muchísimas expectativas que superan con creces a lo obtenido en 2013 que como veis ha sido bastante y todo gracias a muchos de ustedes. Espero poder tener fuerzas para intentarlo, pero sin duda os lo contaré.

    Gracias por seguirme y FELIZ 2014!!

    felicitacion-año

    Materiales del Webcast “Introducción al diseño de Apps para Windows Phone”

    Ya está disponible la grabación de mi webcast de ayer “Introducción al diseño de Apps para Windows Phone”.  Podéis descargarlo directamente desde este artículo o también desde la misma URL desde la os registrásteis

    Os invito a todos a que asistáis al resto de Webcast de estas sesiones porque aprenderéis mucho. Hoy le toca el turno a Roberto Luis Bisbé que hablará de migración de aplicaciones de Windows Phone 7 a Windows Phone 8

    Muchas gracias a todos los que asistieron, espero que os haya gustado el webcast y que hayáis podido aprender algo.

     

     

    download

    Evento | Christmas Windows Phone Sessions

    Para estas Navidades, desde Microsoft nos han convencido a unos cuantos desarrolladores para realizar una serie de Webcasts sobre Windows Phone bajo el nombre “Christmas Windows Phone Sessions”.

    En esta sesión contaremos con Josué Yeray, Rafa Serna, Javier Suárez Ruiz, Roberto Luis Bisbé, un servidor y, por parte de Microsoft, con Alejandro Campos Magencio. Como podéis ver, el cartel es de lujo y, las sesiones no podrían estar a un nivel inferior de lo que se espera, por eso podréis asistir a 12 sesiones sobre diseño y desarrollo de aplicaciones para Windows Phone con las que adquiriréis conocimientos suficientes como para crear aplicaciones alucinantes.

    ¿A qué esperáis para apuntaros?

     

    Christmas-Windows-Phone-Sessions-Poster

     

    Agenda

    TÍTULO

    SPEAKER

    FECHA

    URL EVENTO

    Introducción al diseño de Apps para Windows Phone

    Santiago Porras

    02/12/2013

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032572295&Culture=es-ES&community=0

    Desde Windows Phone 7 a Windows Phone 8

    Roberto Luis Bisbé

    03/12/2013

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032572301&Culture=es-ES&community=0

    Desarrollando con MVVM

    Josué Yeray

    04/12/2013

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032572307&Culture=es-ES&community=0

    Phone 8 Update 3. Cambios para los desarrolladores

    Javier Suárez Ruiz

    05/12/2013

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032572313&Culture=es-ES&community=0

    Optimiza tus apps de Windows Phone 8

    Alejandro Campos Magencio

    09/12/2013

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032572318&Culture=es-ES&community=0

    ¡¡¡NFC a tope!!!

    Rafa Serna

    10/12/2013

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032572322&Culture=es-ES&community=0

    Efectos alucinantes con Nokia Imaging SDK

    Josué Yeray

    11/12/2013

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032572324&Culture=es-ES&community=0

    Descubriendo Windows Phone App Studio

    Javier Suárez Ruiz

    12/12/2013

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032572328&Culture=es-ES&community=0

    Diseño de Apps exclusivas para Windows Phone

    Santiago Porras

    16/12/2013

    https://t.co/gV5LGDnEDy

    Azure Mobile Services, desde las trincheras

    Rafa Serna

    17/12/2013

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032572338&Culture=es-ES&community=0

    Cimbalino Toolkit y Multilingual Toolkit

    Josué Yeray

    18/12/2013

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032572342&Culture=es-ES&community=0

    Distribución empresarial en Windows Phone 8

    Javier Suárez Ruiz

    19/12/2013

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032572345&Culture=es-ES&community=0

    Iberian SharePoint Conference 2013 | Un evento que sin duda quiero repetir

    Hace ya bastantes meses, Alberto Díaz y Juan Carlos González me embarcaron en la aventura de participar en la organización de la Iberian SharePoint Conference, primer evento de este tipo en la península ibérica y que, sin duda alguna, muchísimos de nosotros estábamos deseando que se organizara. Así pues, echaron a andar junto con otros compañeros de profesión como Adrían Díaz, Teresa Cebrían, Edin Kapic, Mario Cortés, David Martos, Miguel Tabera, Alberto Pascual, Marco Canales,… y más (seguro que se me quedó alguno por el camino).

    Además de ayudar a organizar, participé como Speaker de SolidQ, junto con Teresa Cebrián de Encamina, en una sesión sobre “Branding en SharePoint 2013 con HTML5 y Responsive Design” en la que, debido a la masificación de conexiones a la Wi-Fi por parte de los usuarios, tuvimos la mala suerte de perder la conexión en los instantes finales perdiendo así la posibilidad de mostrar el resultado final de nuestra demo y que podéis encontrar aquí “http://sporras.sharepointpower.com/public/” (Hasta el 1 de noviembre de 2013). Una lástima no haber podido mostrar el código del “Display Template” y el código del “ItemStyle.xsl” que realizamos tanto Teresa como yo, ya que era quizás el punto más crítico.

    Al final, el resultado creo que dejó a todos contentos como así demuestran las encuestas y eso nos anima a pensar en el próximo año esperando poder volver a colaborar para que se lleve a cabo.

    Aquí tenéis la presentación que realizamos Teresa y yo.

    Codemotion 2013 | Resumen y materiales de mi charla “Windows Phone: be modern, be cool”

     

    Este año he tenido la gran oportunidad y suerte de participar en Codemotion 2013 como speaker para hablar de diseño en Windows Phone realizando un repaso a la guía de diseño y comprobando cómo podemos sacar mejor rendimiento a los controles más importantes a la hora de crear nuestras Apps. Todo ello gracias a los que decidisteis que sería una buena temática sobre la que tener una sesión y también gracias a SolidQ que me permitió participar en el evento.

    Así pues, el sábado 19 delante de una sala prácticamente llena, empecé a dejar “perlas” de por qué Modern UI no es una tendencia de diseño “fea” y “poco artística” sino más bien, una mejor vía para proyectarle cómo puede usar nuestras Apps, lo que se traduce en mejor experiencia de usuario y mejor usabilidad. Además, poniendo un poco de imaginación y realizando algunos sencillos pasos, podemos conseguir diseños realmente impactantes como por ejemplo el de Cocktail Flow como bien sabía uno de los asistentes. Creo que fue un buen día para mejorar un poco la concepción que se tiene de Modern UI y de Windows Phone, mostrando las grandes posibilidades y la facilidad para crear aplicaciones.

     

    cocktail_flow_wp7

     

     

    Aquí os dejo la presentación y los ejemplos (simples) que utilicé. Espero que os haya gustado a los asistentes al Codemotion 2013 y asimismo espero que os guste a los que leáis este artículo.

    download