Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Mobile / Windows-Phone-7

Dynamically resize WebBrowser-control in Silverlight4 for Windows Phone

5.00/5 (3 votes)
27 Jan 2011CPOL 27.6K  
Dynamic WebBrowser size
Add this JavaScript to the end of your HTML which should placed in the WebBrowser-Control:
JavaScript
<script>
function ResizeWebBrowser() {
    var _renderedHeight=document.body.firstChild.offsetHeight * 0.5; // because -ms-text-size-adjust: 150%;
    var _json = '{""rendered_height"" : '+_renderedHeight+'}';
    window.external.notify(_json);
}
ResizeWebBrowser();
</script>


On the Control, activate JavaScript and register a action for ScriptNotify:
XML
<phone:WebBrowser Name="Browser" Height="100" IsScriptEnabled="True" ScriptNotify="WebBrowser_ScriptNotify" IsHitTestVisible="False" />


Now we can resize our WebBrowser-Control:
C#
private void WebBrowser_ScriptNotify(object sender, NotifyEventArgs e)
{
    Dictionary<String, String> _json = (Dictionary<String, String>)JsonConvert.DeserializeObject(e.Value, typeof(Dictionary<String, String>));
    if (_json.ContainsKey("rendered_height"))
    {
        this.Browser.Height = Int32.Parse(_json["rendered_height"]);
    }
}


That's all and it works perfectly for me. With the Option IsHitTestVisible="False" the WebBrowser-Control can't zoom and scroll and it feels like a Formatted TextBlock.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)