在很多情況下,從使用者體驗的角度考慮,我們都希望我們的Silverlight程式能夠适應各種大小的浏覽器視窗或者架構,如圖所示:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcukDMlVTMlFjNjJTZ0gzNxIGO0YGOlJWZzgzYykTO4EDZfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
那麼如何使Silverlight程式能夠自适應浏覽器視窗的大小呢,即使在動态改變浏覽器視窗的時候也不例外。Google了幾次,都沒找到自己所需要的方案,于是隻好自己來解決了。
首先,有沒有辦法在Silverlight的程式代碼中擷取浏覽器的高寬呢?這一點似乎沒法做到,Application.Current.Host.Content.ActualWidth和Application.Current.Host.Content.ActualHeight擷取的是插件的高寬。BrowserInformation對象擷取的雖然是浏覽器的資訊,但是沒有高寬。那麼可以不可以使用JS擷取浏覽器高寬呢,這當然是可行的。
擷取浏覽器高寬有了思路,那麼怎麼讓程式自适應呢?于是想到了“window.onresize”事件。這樣,問題就解決了,具體代碼如下:
首先,在Silverlight中定義了如下方法:
該函數是可以使用JS調用的,上一篇已經說明了,這裡就略過了。布局的方法寫好了,該寫js去調用了。由于不想每個頁面都寫調用的js,于是UserControl_Loaded
事件就辛苦點,在裡面寫下如下代碼: