Library tutorials & articles
Have you seen the Silverlight? – More Silverlight
Handling Events
Last month we looked at the basic structure of Silverlight and got started on building a simple media player. This month's example carries on where we left off.
First we look at events, and then move rapidly on to animation and other powerful presentation effects.
Handling Events
You can declaratively connect the object’s events to handlers by setting attributes, such as MouseEnter=“eventHandlerName” and Loaded=“loadedEventHandlerName”. You can also subscribe to events in your code, and I’ll show you this latter technique to implement the rollover effect shown in Figure 1.
Figure 1: The button rollover in action
MediaCenter.Scene.prototype =
{
handleLoad: function(control,
userContext, rootElement)
{
this.control = control;
this.initializeComponent(
rootElement );
},
initializeComponent:
function( rootElement )
{
var buttons = new Array(6);
buttons[0] =
rootElement.findName(
“btnPlay” );
buttons[1] =
rootElement.findName(
“btnPause” );
buttons[2] =
rootElement.findName(
“btnStop” );
buttons[3] =
rootElement.findName(
“btnFastForward” );
buttons[4] =
rootElement.findName(
“btnRewind” );
buttons[5] =
rootElement.findName(
“btnLoad” );
for( var i = 0; i < 6; i++ )
{
buttons[i].addEventListener(
“MouseEnter”,
Sys.Silverlight.createDelegate(this,
this.handleMouseEnter));
buttons[i].addEventListener(
“MouseLeave”,
Sys.Silverlight.createDelegate(this,
this.handleMouseLeave));
}
...
},
handleMouseEnter:
function(sender, eventArgs)
{ ... },
handleMouseLeave:
function(sender, eventArgs)
{ ... },
// rest of class elided for clarity
...
}
As you can see, we hook up the two mouse events for each of the “buttons” in the initializeComponent() method that is called from Loaded event handler for the control. This is very reminiscent of the way that we set up events for controls in the InitializeComponent() method of a Windows Forms’ Form class, hence my naming choice for the method.
The way that we identify objects in our code is by calling the findName() method, specifying the element’s name as defined using the x:Name attribute in the XAML. This is similar to using getElementById() in standard JavaScript applications. Note that you can also call getHost() on an element to return a reference to the control itself.
Related articles
Related discussion
-
Gizmox Announces release of Visual WebGui SDK version 6.2.2
by Visual WebGui (0 replies)
-
DeveloperDeveloperDeveloper! Day 7
by James Crowley (2 replies)
-
vbug's winter conference 2008
by James Crowley (0 replies)
-
Error 4 Make sure that the class defined in this code file matches the 'inherits' attribute, and that it extends the correct base class (e.g. Page or UserControl).
by lbargers (3 replies)
-
How to receive data in web server sending from GPRS modem
by AshokSingh (1 replies)
Related podcasts
-
Brad Abrams: .NET Yesterday & Today
Brad Abrams, Group Program Manager for UI Framework and Services, sits down with Craig Shoemaker to discuss some of the origins of the .NET Framework and what's to come from Silverlight, ASP.NET MVC and ASP.NET AJAX.
Events coming up
-
Mar
23
DevWeek 2009
London, United Kingdom
DevWeek is Europe’s leading independent conference for software developers, database professionals and IT architects, and features expert speakers on a wide range of topics, including .NET Framework 4.0, Silverlight 2, WCF 4.0, Visual Studio 2010, RESTful services, Windows Workflow, ASP.NET AJAX 4.0, SQL Server 2008, LINQ, C# 3, .NET Patterns, Ruby, and more.
This thread is for discussions of Have you seen the Silverlight? – More Silverlight.