IE7中没有用于溢出Silverlight控件的滚动条

时间:2011-03-16 20:25:19

标签: asp.net silverlight internet-explorer internet-explorer-7

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上的任何大师都知道如何规避这个问题?感谢。

2 个答案:

答案 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