İpucu

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;

[VB]

Private Sub Page_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded

    AddHandler App.Current.Host.Content.Resized, AddressOf Resized

End Sub

[C#]

public Page()

{   

    InitializeComponent();   

    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.

[VB]

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

End Sub

[C#]

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.

Hepinize kolay gelsin.