Storyboard Dinámicos Silverlight 2.0

Silverlight Add comments

Cambios en Silverlight 2.0 con respecto a la versión alfa 1.1

Hace un par de semanas explicaba como generar objetos y animaciones dinamicamente en Silverlight. Si recordamos en la versión 1.1 habia un bug, el cual nos impedía añadir los objetos Stroryboard a la coleccion Resources, si estos se creaban a partir de la clases que ofrecía Silverlight.

Ahora en Silverlight 2.0 este bug está resuelto por lo que podemos crear objetos Storyboard y DoubleAnimation y añadirlos a la coleccion Resource. Veamos como quedaría nuestro código despues de modificar la función onClick, en la parte en que se el objeto Storyboard para cada una de las bolas que se crea.

C#:
  1. Storyboard sb = new Storyboard();
  2.  
  3. sb.SetValue(NameProperty, "sb_" + contador);
  4.  
  5. DoubleAnimation da = new DoubleAnimation();
  6. da.SetValue(Storyboard.TargetNameProperty, circulo.Name);
  7. da.SetValue(Storyboard.TargetPropertyProperty, "(Canvas.Top)");
  8. da.To = to;
  9. da.From = puntoClick.Y;
  10.  
  11. da.Duration = new TimeSpan(0, 0, 2);
  12. sb.Children.Add(da);
  13.  
  14. sb.Completed += delegate(object s, EventArgs eventArgs)
  15. {
  16.   this.Resources.Remove(sb);
  17.   Contenedor.Children.Remove(circulo);
  18. };
  19.  
  20. Contenedor.Children.Add(circulo);
  21. this.Resources.Add(sb);
  22. contador++;
  23. sb.Begin();

En cualquier caso, puede que alguna vez tengamos que inyectar código XAML en nuestro control, para lo cual podemos actuar de la misma forma vista en el primer ejemplo de Bolas. Pero ahora en  Siverlight 2.0, cuando generemos el String que define nuestro XAML tenemos que añadir todos los namespace. Así quedaría nuestro código:

C#:
  1. Storyboard sb = XamlReader.Load(String.Format(
  2. @"<Storyboard  xmlns=""http://schemas.microsoft.com/client/2007"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"">
  3.     <DoubleAnimation Storyboard.TargetName=""{1}""
  4.       Storyboard.TargetProperty=""(Canvas.Top)"" To=""{2}"" Duration=""00:00:01"">                     
  5.     </DoubleAnimation>   
  6.   </Storyboard>", "sb_" + contador, circulo.Name, to)) as Storyboard;

Leave a Reply

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Acceder

Switch to our mobile site