Silverlight / Silverlight uygulamamızın tarayıcı tarafından tekrar boyutlandırıldığını nasıl algılarız?
Tarih : 6/9/2008
Silverlight 2.0 Beta 2 ile beraber uygulamanızı hazırladınız ve kullandığınız kontrollerin görsel özelliklerini öyle bir ayarladınız ki istemci tarafında kullanıcı tarayıcı penceresinin boyutunu değiştirse de uygulamanız herhangi bir sorun yaşamıyor. Ama keşke programatik olarak da tarayıcının boyutu değiştiğinde haberim olsaydı diyorsanız işte size çözüm;
AddHandler App.Current.Host.Content.Resized, AddressOf Resized
App.Current.Host.Content.Resized += new EventHandler(Resized);
Yukarıdaki şekliyle o an için geçerli olan uygulamanın içerisinde yer aldığı sunucu elementi bulup Resized durumunu yakalıyoruz. Aslında Resized durumundan bağımsız bir şekilde istediğiniz zaman Silverlight uygulamanızın içerisinde bulunduğu pencerenin boyutunu aşağıdaki kodlar ile alabilirsiniz.
Private Sub Resized(ByVal sender As Object, ByVal e As System.EventArgs)
Dim Yukseklik As Double = App.Current.Host.Content.ActualHeight
Dim Genislik As Double = App.Current.Host.Content.ActualWidth
void Resized(object sender, EventArgs e)
double yukseklik = App.Current.Host.Content.ActualHeight;
double genislik = App.Current.Host.Content.ActualWidth;
Bu işlemi Resized event'ı içerisinde yaptığımızda ise internet tarayıcısının boyutları değiştiğinde yeni boyutları almış oluyoruz. Ufak bir uyarı yaparak yazımı tamamliyim, yukarıdaki kodların doğru çalışabilmesi için tarayıcı içerisinde Silverlight uygulamanızın %100 genişlik ve yükseliğe sahip olması gerekiyor. Aslına bakılırsa tarayıcı penceresinin değil Silverlight uygulamasının container'ının boyutunu alıyoruz o nedenle eğer Silverlight uygulamasının boyutları sayfada sınırlanmış olursa elimize sürekli aynı değerler ulaşacaktır.