måndag 2 augusti 2010

Problem med SizeChangedEvent i Silverlight 4

Vid maximering och återställning av fönstret så verkar inte Silverlight registrera och hantera SizeChanged händelsen ordentligt. En workaround kan då vara att använda LayoutUpdated händelsen på detta sätt:

private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
{

this.LayoutUpdated += new EventHandler(MainPage_LayoutUpdated);

}

private void MainPage_LayoutUpdated(object sender, EventArgs e)
{

if (myObj != null)
{

Dispatcher.BeginInvoke(() =>

{

myObj.SizeChanged(new Size(Application.Current.Host.Content.ActualWidth, Application.Current.Host.Content.ActualHeight));

});

}

}

Man måste använda den asynkrona metoden Dispatcher.BeginInvoke() annars får man lite felmeddelanden!