Silverlight 2.0 introduktion, del 8 - events

I både del 1 og del 2 af denne introduktion til Silverlight 2.0 så vi lidt på hvordan vi kan bruge Silverlight i praksis. Vi havde både gang i Visual Studio og Expression Blend. Vi fik lavet os en lille animation som ikke var særlig brugbar, men som måske gav dig en forsmag på hvad Silverlight kan tilbyde dig.

Husk, Silverlight er en plugin til forskellige browser og gør det meget nemt at udvikle interaktive og dynamiske dele til en web applikation.

Hvad er en event

I .NET verdenen er en event noget der bliver kaldt på baggrund af noget andet. Det vil sige, at hvis en knap bliver trykket på, så kan vi som udvikler "lytte" til en given event på knappen der fortæller os at knappe nu er blevet klikket på. Button kontrollen i Silverlight udstiller flere forskellige events som kan blive "lyttet" til hvis der sker noget med applikationen.

Events er hvad der giver det interaktive i enhver applikation, uden dem kunne vi stort ikke noget som helst, og det ville blive meget kedelig at være udvikler. Pas dog på med at gøre brug af for mange events for det kan hurtigt blive noget rod at finde ud af hvad der kalder hvad.

eventsOnButton

Når du har tegner en Button ind på din designflade i Expression Blend kan du i højre side af værktøjet se hvilke events du kan tilgå ved at trykke på den knap der på billedet er fremhævet med "Events" teksten.

Den mest tradionelle event på Button er ok Click eventen og den bliver kaldt når en bruger klikker på den.

Faktisk er mange af de ovenstående events ikke specielle i forhold til Button kontrollen. F.eks er KeyDown en event der blevet smidt hvis brugeren trykker på sit keyboard (key down).

Hvis vi tager et simpelt eksempel på hvordan Click og KeyDown virker så se med her:

XAML

<UserControl x:Class="SilverlightApplication11.Events"
    xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">
        <Button HorizontalAlignment="Left" Margin="69,110,0,149" x:Name="button" VerticalAlignment="Stretch" Width="81" Content="Button" Click="Button_Click" KeyDown="Button_KeyDown"/>
        <TextBlock Height="49" Margin="69,0,112,77" VerticalAlignment="Bottom" x:Name="text" Text="" TextWrapping="Wrap"/>

    </Grid>
</UserControl>

Code-behind

public partial class Events : UserControl
{
    public Events()
    {
        InitializeComponent();
    }

    private void Button_Click( object sender, RoutedEventArgs e )
    {
        text.Text = "click";
    }

    private void Button_KeyDown( object sender, KeyEventArgs e )
    {
        text.Text = "key down";
    }
}

Du kan se at i vores XAML er der defineret attributer til de 2 events: Click="Button_Click" KeyDown="Button_KeyDown". De to peger på henholdsvis Button_Click og Button_KeyDown i vores code-behind. Du kan også tilføje dem direkte i koden istedet for i din markup:

button.Click += new RoutedEventHandler( button_Click );
button.KeyDown += new KeyEventHandler( button_KeyDown );

Man vælger selv hvor man vil have sine event handlers, men det kan være nemmest som udvikler at have dem direkte i koden.

Events gør at du kan have en interaktiv dialog med din slutbruger, for nu er muligheden der for at oprette et objekt eller tilføje data til en database når en bruger gør noget specielt i præsentations interfacet (det man ser i browseren).

Events som er en del af .NET, er bare en af de ting i Silverlight platformen der gør teknologien så fed. Hvis du er vant til at udvikle .NET kode så er du pludselig også vant til at udvikle til Silverlight. Det hele er en flydende overgang og det meste af det du er vant til i .NET kode fælger med i Silverlight (jeg kan slet ikke få armene ned).

Events er lige en af de ting vi skal kigge nærmere på i næste post når vi skal bygge vores egen media player i Silverlight 2.0.