2008-12-03 52 views
1

有什么办法可以将Silverlight控件“停靠”到浏览器窗口吗?例如,我想在页面顶部有一个HTML标头,然后让Silverlight控件正好占据窗口的其余部分,每当窗口调整大小时都整齐地调整大小。如何“停靠”一个Silverlight控件

Visual Studio创建的默认页面使用100%宽度和高度的样式,以使Silverlight控件占据整个窗口。我可以很容易地修改该模板以按百分比分割页面(例如20%的HTML页眉和80%的Silverlight控件)。但我真正想要的是标题高度是静态的,Silverlight控件占用了剩余窗口的100%。

回答

2

以下是JavaScript中的解决方案。首先,创建这个函数:

<script type="text/javascript"> 
    function resizeSLHost() 
    { 
     var docHeight = document.body.offsetHeight; 
     var pluginHeight = docHeight - 130; 
     var slplugin = document.getElementById("silverlightControlHost"); 
     slplugin.style.height = pluginHeight + "px"; 
    } 
</script> 

然后,在你口主体标记,你说:

<body onload="resizeSLHost()" onresize="resizeSLHost()"> 

你Silverlight的主机格之前把你的头股利的权利:

<div id="header" style="height:130px"></div> 
<div id="silverlightControlHost"> 
    <object data="data:application/x-silverlight-2" type="application/x-silverlight-2" width="100%" height="100%"> 
     // the usual stuff here... 
    </object> 
    <iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe> 
</div> 

当然,您在resizeSLHost()中从docHeight中减去的数字必须等于标头div的高度。

这在IE 7和Firefox 3.0.4中适用于我。

2

你应该仍然可以使用你的CSS来做到这一点。只需将您的标题DIV设置为所需大小,然后将Silverlight元素的容器DIV设为100%/ 100%

+0

我试过了,但100%高度似乎意味着包含元素的高度的100%,而不是包含元素的高度减去标题div的100%。所以最终的结果是一个垂直滚动条,因为Silverlight控件太大,正好是标题div的高度。 – 2008-12-03 21:58:53

相关问题