Da oggi inizio a memorizzarmi gli esempi e le prove che faccio con silvelight.

Questo esempio trovato sul blog di Mike Snows consente di creare un loop tramite l'utilizzo dello Storyboard utile da utilizzare nei giochi. Come dice Mike questa tecnica risulta essere la migliore rispetto ad altre.

Nell'esempio vedrete visualizzato un contatore che si incrementa in una TextBlock.
 

Ecco lo XAML:

<UserControl x:Class="SilverlightApplication2.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">
        <TextBlock x:Name="myTextbox">Display Counter</TextBlock>
    </Grid>
</UserControl>

 

Il codice C#:

using System;
using System.Windows.Controls;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
 
namespace SilverlightApplication2
{
    public partial class Page : UserControl
    {
        Storyboard _gameLoop = new Storyboard();
        int count = 0;
 
        public Page()
        {
            InitializeComponent();
            _gameLoop.Duration = TimeSpan.FromMilliseconds(0);
            _gameLoop.Completed += new EventHandler(MainGameLoop);
            _gameLoop.Begin();
        }
 
        void MainGameLoop(object sender, EventArgs e)
        {
            // Add any game logic/animation here.
            // Example:
            myTextbox.Text = count.ToString();
            count++;
 
            // Continue storyboard timer
            _gameLoop.Begin();
        }
    }
}

 

Per variare il tempo basta incrementare la Duration dello storyboard:

_gameLoop.Duration = TimeSpan.FromMilliseconds(1000); // 1 secondo

 

Ecco il post originale.