autoI've一直致力于嵌入ASP.NET Web应用程序的Silverlight 4应用程序。 Silverlight控件的高度不同,在很多情况下,垂直流过屏幕底部。
对于大多数浏览器(特别是IE 8,Chrome,Firefox)来说,这不是问题,因为它们会向HTML文档添加垂直滚动条。但是, IE7不显示这些滚动条,因此无法查看整个Silverlight控件。
我如何嵌入它的代码片段:
...
<div id="silverlightControlHost">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
height="100%"
width="100%">
<param name="source" value="MyApp.xap" />
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="4.0.41108.0" />
<param name="autoUpgrade" value="true" />
</object>
...
只有相关的CSS:
#silverlightControlHost
{
height: 100%;
text-align: center;
}
我尝试添加'overflow:auto'和margin / padding样式属性(显示滚动条但实际上根本不滚动?),在<object>
上设置静态大小,两者都没有工作。请记住,即使在页面加载时间之后,此控件的高度也会有所不同(Silverlight控件在不同高度的RootVisual之间切换)。
IE7上的任何大师都知道如何规避这个问题?感谢。
答案 0 :(得分:2)
戴夫,
有时似乎有用的是添加以下样式:
<style type="text/css">
html, body {
height: 100%;
overflow: auto;
}
body {
padding: 0;
margin: 0;
}
#silverlightControlHost {
height: 100%;
text-align:center;
}
</style>
html, body
的样式在这里最为重要。
<强>更新强>
也许有用的是从silverlight内部调整silverlight控件主机div
的大小。我找到了这个代码示例,您可以将其附加到调整大小事件。
Dispatcher.BeginInvoke(() =>
{
double height = this.RenderSize.Height;
double width = this.RenderSize.Width;
//silverlightControlHost is the div which hold silverlight object
HtmlPage.Document.GetElementById("silverlightControlHost").SetStyleAttribute("width", height.ToString() + "px");
HtmlPage.Document.GetElementById("silverlightControlHost").SetStyleAttribute("height", width.ToString() + "px");
});
(关于Silverlight论坛的Frank Lan)
HTH
答案 1 :(得分:0)
我有类似的问题,我通过添加样式来解决它 html,body - min width和height elements。
像这样: html, body
{
height: 100%;
overflow: auto;
min-height:500px;
min-width:700px;
}
对我来说,它适用于Opera 12和IE 9