Hola Mundo Surface con WPF

Como comente en mi anterior post el SDK del Surface incluye dos plantillas del proyecto para desarrollar en Surface, WPF y XNA. Pues bien vamos a ver como se hace una aplicación para Surface con WPF.

clip_image002

Si creamos el proyecto de Surface esto es lo que tenemos en la ventana de solución de proyecto.

clip_image004

Al ser una aplicación de WPF tenemos el clásico App.xaml que el objeto Application y la ventana principal. La ventana SurfaceWindow1.xaml se le ha cambiado la clase base y ahora en vez de ser Window es SurfaceWindow. También se ha cambiado en el xaml la clase base de esta manera.

<s:SurfaceWindow x:Class="SurfaceApplication1.SurfaceWindow1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:s="http://schemas.microsoft.com/surface/2008"
    Title="SurfaceApplication1"
    >
  <s:SurfaceWindow.Resources>
    <ImageBrush x:Key="WindowBackground" Stretch="None" Opacity="0.6" ImageSource="pack://application:,,,/Resources/WindowBackground.jpg"/>
  </s:SurfaceWindow.Resources>

  <Grid Background="{StaticResource WindowBackground}" >

  </Grid>
</s:SurfaceWindow>

De esta manera el Shell de Surface sabe que aplicaciones son aplicaciones de Surface.

A partir de este momento tenemos un proyecto de WPF normal y podemos empezar a programar de manera normal.

Como ya dije en mi post anterior, una de las características más atractivas de hacer aplicaciones para Surface en WFP es, además del hecho de que tenemos una serie de características propias de WPF (controles, layout, hardware accelerated), que también tenemos una serie de controles que Microsoft ha hecho que se pueden utilizar dentro de WPF.

Estos controles a los que me refiero son los common controls de WPF pero que ahora se han “surfeizado”, es decir si antes teníamos Button ahora tenemos SurfaceButton que permite tener un botón que es sensible a los contactos del dedo.

clip_image006clip_image008

Estos contactos (Contacts) son uno de los conceptos usados por Surface para reconocer que hay algo encima de la mesa. Estos contactos son parecidos a los eventos de raton, y podemos tener tres tipos de contactos, Finger, Blog, Tagged-object, que permiten reconocer si se ha puesto un dedo encima, un objeto mayor, o un objeto con un Tag.

Así que siguiendo con la filosofía de eventos propios del ratón ahora para los contactos tenemos eventos como estos: ContactEnter, ContactLeave, ContactChanged y demás.

Los controles mencionados anteriormente, son controles que ya tienen la funcionalidad propiea de los controles de Windows pero que responden a los eventos de contactos de Surface así que nosotros no tenemos que, en cada proyecto, implementar esa funcionalidad sino que podemos usar los que ya vienen, además de que todos los controles tiene soporte de tiempo de diseño, lo que significa que se visualizan correctamente en Expression Blend.

Podemos ver una captura aquí.

clip_image010

 

Así que ya podemos empezar a usar los controles de Surface para desarrollar nuestras aplicaciones de Surface. Además todos los controles están muy bien diseñados, es decir, que todos tienen un árbol visual bien definido, lo que permite que los diseñadores cambien el aspecto visual del control si que eso afecte al comportamiento del control.

Saludos desde Londres. Luis.

3 comentarios en “Hola Mundo Surface con WPF”

  1. Hola Luis,
    estuve ayer en tu charla de Surface en Microsoft, soy Miguel López de Albacete y te quería pedir aquella información que nos comentaste sobre cómo usar Visual Studio 2010 y Expression Blend 4 para programar WPF con Surface…
    Gracias de antemano y un saludo,
    Miguel

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *