Diese alternative Lösung nutzt eine Eigenschaft des SilverlightHost. Das ist die Eigenschaft "IsLoaded". Diese Eigenschaft zeigt an, ob das gehostete "Silverlight-Plug-In" den Ladevorgang vollständig abgeschlossen hat.
Hier ist der betreffende Quellcode von MainPage.xaml.vb:
Public Sub New()
InitializeComponent()
pd = New DispatcherTimer With {.Interval = TimeSpan.FromMilliseconds(100)}
AddHandler pd.Tick, AddressOf CheckLoadedStatus
pd.Start()
End Sub
Private pd As DispatcherTimer
Private Sub CheckLoadedStatus(ByVal sender As Object, ByVal e As EventArgs)
If App.Current.Host.IsLoaded = True Then
pd.Stop()
RemoveHandler pd.Tick, AddressOf CheckLoadedStatus
sbMove.Begin()
End If
Die Vorgehensweise ist total einfach. Im Konstruktor von MainPage wird ein DispatcherTimer mit einem Intervall von 100ms erzeugt. Die Routine "CheckLoadedStatus" hängt sich an das Tick-Ereignis des DispatcherTimers. Der DispatcherTimer wird gestartet. Die Methode "CheckLoadedStatus" überprüft alle 100ms den Wert von App.Current.Host.IsLoaded. Sobald der Wert auf "True" geht, wird der DispatcherTimer angehalten, der Delegat entfernt und das Storyboard gestartet.
Total simpel und es funktioniert garantiert.
Keine Kommentare:
Kommentar veröffentlichen