Material del Curso de WPF y Silverlight

Aquí os dejo un compendio de Ejemplos de WPF y Silverlight dados en el curso de Microsoft sobre estas tecnologías en la Universidad de VIC (Barcelona)

Encontraréis ejemplos sencillos pero muy utiles sobre Animacion, Brushes, Layout, Binding, Video, 3D etc... Teneis tambien un buen ejemplo sobre como hacer consultas de XML en Silverlight (aunque espero hacer un post sobre esto pronto :S). Disfrutadlo con sabiduría

image

 EjemplosVIC2008.rar ~ 8Mb
Necesitas Framework 3.5 SP1

Currently rated 4.0 by 2 people

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Blending Flash Parte 2: Conceptos

Una de las mayores diferencias que encontramos con Flash, es que Silverlight y WPF no son “un programa” sino que son una tecnología en sí misma. Expression Blend es tan solo un programa que nos ayuda a “moldear” esa tecnología de una manera sencilla.  Por poner un ejemplo, Blend es a XAML lo que Dreamweaver es a HTML. La tecnología es HTML pero Dreamweaver nos ayuda a, sin tener que tocar código, componer nuestro HTML.

Si habéis usado Dreamweaver, sabréis que esto es una verdad a medias. Porque o bien dreamweaver acaba metiendo código “basura” o no hace exactamente lo que queremos que haga. Así que lo más conveniente saber HTML y corregir a mano muchas cosas, incluso a veces hacerlo todo a mano desde 0.

Con Blend pasa exactamente igual, a veces Blend nos generará un código XAML que tendremos que cambiar a mano, así que voy a explicar brevemente…

¿Que es XAML?

Xaml es un lenguaje declarativo de Decorado (Markup) basado en XML. (Para que nos entendamos, es un HTML muuuy avanzado.)  En él, se definen elementos y acciones que se representarán en el programa. Estos elementos, tienen una serie de propiedades que definen su forma, estado, color, tamaño, etc... Voy a poner un ejemplo.

 

<Button Height="57"  Width="100"  Content="mi Boton"/>

image 

Como veis, con una sola línea, podemos hacer un botón. Exactamente como HTML.  Los elementos o controles de usuario se definen como he dicho por propiedades. En este caso, el botón tiene un ancho “100”, un alto “57” y un contenido “mi botón”. Estas son propiedades simples. Donde una propiedad tiene un valor sencillo, como “40”, “Hola”, “#ffffffff”, etc...

Pero existen propiedades que son más complejas y no se podrían expresar como una palabra o numero. Esas, como es el caso de los rellenos degradados se escriben de esta forma.

 

<Button Height="57"  Width="100"  Content="mi Boton">
            <Button.Background>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="#FFFFFFFF"/>
                    <GradientStop Color="#FFFF0000" Offset="1"/>
                </LinearGradientBrush>
            </Button.Background>
        </Button>

Abrimos el Nodo del elemento y metemos un hijo con esta nomenclatura <Elemento.Propiedad> y dentro metemos la información. Esto nos da un boton tal que así.

image

No os asustéis! como os he dicho, no tenéis que escribirlo vosotros. De hecho si todo va bien, apenas veréis el código, tan solo la interfaz grafica de Blend tal y como pasa en Flash.

Con XAML podéis hacer todo tipo de cosas, Dibujos vectoriales, Animaciones, Videos, Fotos, meter sonidos, hacer un Layaout dinámico, hacer gran parte de la interacción, meter incluso 3D (en WPF). No tenéis ningún limite os lo aseguro.

No obstante tal y como pasa en flash, llega un momento en el que la interacción se vuelve compleja y necesitamos programar que es lo que va a pasar. Por ejemplo, que pasa cuando hago clic en un botón. En flash es sencillo, nos vamos a la ventana de acciones y escribimos miboton.mouseDown = function(){}

En Blend, no tenemos ventana de acciones pero tenemos algo mejor e infinitamente más potente…

El Code Behind

Todos los archivos XAML tienen un “compañero” que se llaman igual pero terminan en XAML.CS (en el caso de C#). Si empezamos un proyecto de Silverlight veréis que hay un archivo Page.Xaml y otro Page.Xaml.cs

Estos son los archivos de “Code Behind” o Código trasero. Aquí estará toda la funcionalidad de nuestro elemento que no podamos hacer directamente en XAML.

En nuestro XAML, en el botón que tenemos en Page.Xaml hacernos referencia a una función que está escrita en su Code Behind, es decir en Page.Xaml.cs

Page.Xaml

 

<Button Height="57"  Width="100"  Content="mi Boton" Click="Button_Click"/>

Page.Xaml.cs

private void Button_Click(object sender, RoutedEventArgs e)
       {
           this.Background = new SolidColorBrush(Colors.Blue);
       }

Lo bueno del tema, es que los Archivos CS podemos editarlos con VisualStudio 2008 lo que nos da una potencia increíble, y además vuestro programador estará muy contento. Ya que es un lenguaje que seguramente conozca (se puede programar en C#, Visual Basic, Phyton o Ruby) lo cual no está nada mal.

Bueno creo que hasta aquí los conceptos que menos se parecen a flash y pueden ser un poco más complicados. El resto será mucho más visual y divertido.

Próximo: Blending Flash Parte 3: Interfaz de Blend ~ Flash.

Currently rated 3.5 by 4 people

  • Currently 3.5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Blending Flash Parte 1: Empezando con Blend

 

Voy a empezar una serie de posts con el objetivo de explicar de una manera sencilla como migrar la “mente flashera" a Blend, tanto con WPF como con Silverlight 2. El primer día que nos instalamos Blend con la intención de trastear un poco, nos sentimos un poco frustrados ya que aunque parece que es muy similar a flash, no lo es tanto. La manera de pensar de Blend (WPF&Silverlight) es distinta a Flash. Pero por suerte! cuando le pilléis el punto, veréis que tiene muchas cosas mas sencillas y mejor pensadas para que hagáis aplicaciones interactivas! y vuestra imaginación será libre de fluir entre los bytes.

Vamos a empezar desde principio y bajo punto de vista del Diseñador. Así que si eres desarrollador puede que esto no te sea muy útil. Bueno vamos a lío!

Instalando Blend, WPF & Silverlight 2

A diferencia de flash, en el cual solo tenemos que Instalar Adobe Flash CS3 y empezar a pulsar compulsivamente Ctrl+Enter xD, Para poder comenzar a trastear, vamos necesitar instalarnos más cosillas.

  1. Microsoft .Net FrameWork 3.5
  2. Microsoft Expression Blend 2.5 (o superior)
  3. Microsoft Silverlight 2 (Beta por el momento)
  4. Microsoft Visual Studio (Opcional pero muy recomendable!) y las tools de Silverlight.

Una vez tengamos esto corriendo en nuestro ordenador y podemos empezar a meter caña. Abrimos Blend, seleccionamos New Project  y Seleccionamos el tipo de proyecto que queramos en este caso vamos a empezar con Silverlight 2.

imageimage

 

Si todo ha ido como esperamos, (arriba tenéis una captura de Blend listo para empezar un proyecto.) vamos a comenzar definiendo un poco algunos conceptos.

Proyectos de Silverlight: .SLN vs .FLA

Como sabéis, en Flash, tenéis un archivo .FLA que contiene todo. Desde imágenes, Dibujos vectoriales, animaciones, sonidos, Scripts, etc... Y todo este contenido lo tenéis en la ventana de Librería. Pues bien, tanto en Silverlight como en WPF, no tenemos todo en un solo archivo. Sino que tenemos una carpeta donde están todos los recursos de nuestro proyecto (Imágenes, Sonidos, Partes de Código, Videos etc) Pensad que esto tiene muchas ventajas, ya que podemos cambiar contenido sin tener que abrir blend. Si quisiéramos cambiar una Imagen por ejemplo, pues simplemente sustituimos la que este en la carpeta y listo. Nada más empezar un proyecto de Silverlight, nos encontraremos esta estructura de carpetas.

image

La carpeta bin, es donde se "publicará" o compilará nuestra web. Las carpetas obj y Propieties no os preocupeis por ella por el momento. El resto como veís son Archivos XAML y XAML.CS son vuestra Web, vuestros Formularios, vuestras animaciones, vuestros controles etc. Pensad en esto como una Web HTML de toda la vida. Para que nos entendamos los archivos XAML son como HTML y los XAML.CS son como archivos JS que controlarán el html. Evidentemente esto no es exactamente asi, pero la entendernos esta bien.

Si subís un nivel de la carpeta actual, os encontrareis la Carpeta que contiene todo, con el nombre del proyecto (en este caso se llama Conceptos) y un archivo SLN que es el que tenies que abrir con Blend.

image

Ahora ya podeis trastear a gusto! Haced algunos Circulos, Cuadrados y tal. Intentad rellenalos con degradados y cosas asi. Poned algun boton en la aplicación, algun checkbox..  y para probarlo todo en el explorador presionad F5 !

Pronto: Blending Flash Parte 2: Conceptos.

Currently rated 4.0 by 1 people

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Fuentes personalizadas con Silverlight 2

Gracias a dios, la manera de embeber fuentes en nuestra web con silverlight ha cambiado radicalmente desde la  versión 1.0. Donde teníamos que descargar previamente y mediante Javascript la fuente en cuestión. Lo malo era que en tiempo de diseño, en Blend, no veías como quedaba la fuente y claro, al final la mejor solución era hacer el texto estático y meterlo mediante PNGs o bien aguantarte y usar las escasas fuentes que traía de serie.

Ahora en la versión 2.0 el proceso se ha agilizado enormemente, Blend aun no permite seleccionar fuentes personalizadas visualmente pero con una sencilla nomenclatura podemos trabajar con ellas perfectamente y además podremos visualizarlas sin problemas en tiempo de diseño.

Vamos al lío.

Abrimos nuestro Xaml donde estemos trabajando, hemos puesto previamente un TextBox.

 
			   1: <UserControl		
	
			   2:     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"		
	
			   3:     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"		
	
			   4:     x:Class="SilverlightApplication1.Page"		
	
			   5:     Width="640" Height="480">		
	
			   6:     <Grid x:Name="LayoutRoot" Background="White" >		
	
			   7:         <TextBox FontFamily="Arial" Text="El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja." TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Center" />		
	
			   8:     </Grid>		
	
			   9: </UserControl>		
	

image

Debemos localizar el archivo de la fuente que queremos usar (normalmente en la carpeta fonts de windows) y lo arrastramos a la pestaña de proyecto (o bien hacemos un Add new Item y la selecionamos desde ahi). Debes tener en cuenta que Silverlight solo soporta truetype y opentype (lo cual es mas que suficiente!)

Si estas trabajando directamente con visualStudio 2008 debes poner el archivo como un Resource (en propiedades)

Una vez tenemos el archivo en el proyecto tan solo tenemos que usar esta nomenclatura

<TextBox FontFamily="ArchivoDeLaFuente.ttf#NombreDeLaFuente" >

De tal manera que si en nuestro ejemplo quisieramos meter la fuente Bradley Hand ITC en nuestra web hariamos los siguiente.

			   1: <UserControl		
	
			   2:     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"		
	
			   3:     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"		
	
			   4:     x:Class="SilverlightApplication1.Page"		
	
			   5:     Width="640" Height="480">		
	
			   6:     <Grid x:Name="LayoutRoot" Background="White" >		
	
			   7:         <TextBox FontFamily="BRADHITC.TTF#Bradley Hand ITC" Text="El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja." TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Center" 		
	
			   8:         />		
	
			   9:     </Grid>		
	
			  10: </UserControl>		
	

image

Como veis funciona perfectamente. Eso si, a veces cuando compilais desde VisualStudio se le va la pinza de lo lindo y se olvida de cargar la fuente (me imagino que será porque aun esta en beta) pero si recargáis la pagina no suele haber problemas.

y nada mas por hoy, Espero que os haya gustado el primero de, espero que muchos, post. sobre este mundo tan abandonado de diseñadores de WPF y Silverlight! Gracias a Todos!

PD : Si estais buscando como Embeber la fuente desde el codebehind (C#) Aqui teneis un post que os va a venir muy bien (En ingles).

Currently rated 4.0 by 1 people

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5