Seiten

Sonntag, 27. Februar 2011

How To: Storyboard erst mit dem Sichtbarwerden der Anwendung im Browserfenster starten

In zwei früheren Artikeln habe ich Techniken beschrieben, um ein Storyboard erst dann zu starten, wenn das Laden der Silverlight-Anwendung abgeschlossen ist. Diese Techniken helfen spätestens dann nicht mehr, wenn die Silverlight-Anwendung eine kleine Größe hat, Bestandteil einer größeren html-Seite ist und zunächst nicht sichtbar ist, wenn die html-Seite startet, z.B. weil sie am untersten Ende der html-Seite eingebettet ist.

Dieser Artikel schließt diese Lücke.

Am unteren Ende dieses Artikels findet Ihr eine Beispielanwendung, die die Technik demonstriert. Die Anwendung spielt ein Storyboard ab, sobald die Anwendung im Browserfenster sichtbar wird. Wer neugierig ist, scrollt diese Seite einfach runter und sobald die Beispielanwendung sichtbar wird, startet das Storyboard. (Das Storyboard bewegt einen Balken von links nach rechts und wechselt die Hintergrundfarbe von Dunkelgrau zu Grün. Es läuft nur einmal.) Nachfolgend findet Ihr zunächst den Quellcode.

Partial Public Class MainPage
    Inherits UserControl

  Public Sub New()

    InitializeComponent()

    AddHandler CompositionTarget.Rendering, AddressOf DoSomething

  End Sub

  Private Sub DoSomething(ByVal sender As Object, ByVal e As EventArgs)

    sbTest.Begin()

    RemoveHandler CompositionTarget.Rendering, AddressOf DoSomething

  End Sub

End Class


Und so funktioniert das Ganze. Im Ereignisbehandler des Konstruktors der Anwendung wird dem CompositionTarget.Rendering() Ereignis ein Delegat hinzugefügt. Dieser Delegat zeigt auf die Methode DoSomething(). Die Methode DoSomething() startet das Storyboard und entfernt dann den Delegaten.

Und warum funktioniert das Ganze? Ganz einfach: Das Ereignis "Rendering()" der Klasse CompositionTarget feuert nur dann, wenn das Silverliight-PlugIn im Browserfenster mindestens teilsweise sichtbar ist.

Diese Technik kann natürlich auch für anderes benutzt werden. Es kann beispielsweise ein Video abgespielt werden oder Inhalt dynamisch nachgeladen werden, sobald die Anwendung sichtbar wird.


Keine Kommentare:

Kommentar veröffentlichen