Reflection IT Blog

Benieuwd naar de laatste ontwikkelingen rondom software ontwikkeling en Reflection IT? Onze slimme koppen delen regelmatig hun kennis en ervaring. Zo weet jij wat er speelt!

2009 Blog posts

Silverlight Behaviors and Commands


A few months ago I wrote an blog post about a Silverlight 3.0 LetItSnowBehavior. This Behavior can be used to add a Snow effect to a Canvas. Very usefull if you want to create a christmas card.

This behavior was always showing you falling snow flakes. You couldn't stop and (re)start the gameloop. The best way to implement this is by adding Commands to the behavior. This allows you to select one or more triggers to Start or Stop the gameloop. I have added the Start and Stop properties of the type ICommand to the LetItSnowBehavior class. In the constructor I have initialized these properties with new ActionCommand objects (Microsoft.Expression.Interactions.dll) and delegates to the OnStop() and OnStart() methods. Triggers attached to these commands will execute the these methods.

Simple ReportDocument for Silverlight 4


I have written an Simple Report Library for Windows Forms applications a few years ago. The new Printing API makes it possible to create a similar solution for Silverlight 4.

You create a report by instantiating a new ReportDocument object. You can set the Title and the SubTitle. Next you add Paragraphs (FrameworkElements) to the report. Finally you Print the report.

ReportDocument r = newReportDocument() {

    Title = "Test Title",

    SubTitle = "Test SubTitle",


for (int i = 0; i < 40; i++) {

    var tb = newTextBlock() {

        Text = "Test text " + i,

        FontSize = i + 10,





This prints the following Test Title.pdf if you print it to a PDF writer.

Test Title.pdf

Control a MediaElement using a custom Behavior


Controlling a MediaElement in Silverlight isn't difficult. You use the Play(), Stop() and Pause() methods in your code. I have written the 'ControlMediaElementAction' Behavior which makes it even easier. You don't have to write a single line of code. The ControlMediaElementAction is associated with a MediaElement. It has a ControlMediaElementOption which you can set to Play, Stop, Pause and RewindAndPlay. The Invoke() methods controls (Plays, Stops, Pauses and RewindAndPlays) the AssociatedObject (MediaElement).

public class ControlMediaElementAction : TriggerAction<MediaElement> {


    protectedoverridevoid Invoke(object o) {

        switch (ControlMediaElementOption) {











                this.AssociatedObject.Position = TimeSpan.Zero;








    publicControlMediaElementOption ControlMediaElementOption { get; set; }




public enum ControlMediaElementOption {

    Play, Stop, Pause, RewindAndPlay


You assign a ControlMediaElementAction to a MediaElement. In Expression Blend you drag it from you Asset tab and drop it on a MediaElement. Then you can select your trigger and set all other properties from the Properties tab.

ControlMediaElementAction in Blend 3.0

In the following example I have 3 ControlMediaElementAction assigned to a MediaElement. The first is triggerd by the 'Click' event of 'buttonPlay' and uses the 'Play' option. The second is triggerd by the 'Click' event of 'buttonPause' and uses the 'Pause' option. The third is triggerd by the 'MediaEnded' event of the MediaElement and uses the 'RewindAndPlay' option, making the movie loop.



I'm proud to announce the Silverlight website. It is a web application where Silverlight Developers can post links to interesting information, controls, resources e.t.c. We invite you to submit your Silverlight resources.

Silverlight is a Silverlight 3.0 LOB application which uses a lot of the new techniques:

  • .NET Ria Services
  • Navigation Application (deeplinking + history)
  • Search Engine Optimization (SEO)
  • Behaviors

Silverlight XP was created by Loek van den Ouweland and me, and is currently at version 1.0. We plan to add a lot of features soon. We don’t have a feedback-function yet. Please drop comments about the website by mail.

Microsoft Silverlight 3 training


Silverlight is een 'cross-over browser plugin' van Microsoft die het mogelijk maakt om animaties, audio en video weer te geven in de webbrowser (zoals bijvoorbeeld Explorer, Firefox, Safari).

Silverlight bevat een subset van het .NET 3.5 Framework waarmee, vanuit een Microsoft .NET taal zoals C#, Visual Basic of .NET, een programma geschreven kan worden dat in een browser draait. Tot nu toe kon dat alleen met JavaScript of met Flash van Adobe.

Microsoft Silverlight 3 training

Docenten Fons Sonnemans en Loek van den Ouweland verzorgen deze interactieve en praktijkgerichte trainingen voor zowel geinteresseerden als startende en meer ervaren programmeurs en grafisch vormgevers.

Silverlight 3.0 LetItSnowBehavior


Silverlight 3.0 has a great new feature called Behaviors. You can use them for a lot of things, one of them is to create a SNOW effect in a canvas. I know it is not yet Christmas but I like to be prepared. If you don't know what a behavior is or how to write them read first this blog post from Andrea Boschin.

You can download the sourcecode from here.

Silverlight projects in Visual Studio 2010


I finally found some time to test the beta of Visual Studio 2010. No problems found yet. It even supports a visual designer (Cider) for Silverlight projects. You can now use it to drag & drop controls from your toolbox, add rows/columns to a grid and set properties. Things which where only possible in Expression Blend.

Cider in Visual Studio 2010

Favorite MIX09 Videos


I didn't go to the MIX09. Luckily Microsoft has published the sessions using high quality videos. Here are my favorites:

Get in touch

Met dit formulier kunt u informatie over een In-Company of Small-Group training aanvragen. U kunt in het bericht aangeven welke training u wilt, voor hoeveel personen, wanneer deze verzorgd moet worden en op welke locatie. Wij nemen vervolgens contact met u op.

U kunt ons ook bereiken via telefoonnummer +31 (0)493-688810 of per mail