none
silverlight内容高度大于浏览器高度,内容被隐藏如何解决? RRS feed

  • 问题

  • silverlight内容高度大于浏览器高度,内容被隐藏如何解决?

    silverlight内控件高度是随内容而改变的!

    2008年12月24日 3:25

答案

  •  

    Code Snippet
        <div id="silverlightControlHost" style="width:1200px;height:1024px;min-height:1024px">
      <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="1200" height="1024">
       <param name="source" value="ClientBin/MSDNSL.xap"/>
       <param name="onerror" value="onSilverlightError" />
       <param name="background" value="white" />
       <param name="minRuntimeVersion" value="2.0.31005.0" />
       <param name="autoUpgrade" value="true" />
      </object>  
        </div>

     

     

     

    以object形式页面插入Silverlight控件更好控制,一个是外层DIV的大小,你指定了,如果浏览器展示部分超过这个宽度或高度就会出现滚动条,还有一个是里面object的大小.设置成为100%sl原有大小如果超出了就会自动隐藏掉

     

    你是要里面的div大小是固定的,就是长出去想ie出现滚动条?还是要外面的div多大,里面的object就多大?

     

    第一种方法就跟div嵌入其他页面元素一样指定宽高就可以了

     

    第二种在程序里面

     

    Code Snippet

                ScaleTransform myScale = new ScaleTransform();
                double sx, sy;
                sx = Application.Current.Host.Content.ActualWidth / 1024;
                sy = Application.Current.Host.Content.ActualHeight / 768;
                myScale.ScaleX = sx;
                myScale.ScaleY = sy;

                LayoutRoot.RenderTransform = myScale;

     

     

    object设置成为100% 100%内部用Canvas做布局

     

    还有一种如果你用Grid做根布局,就不用加上面的代码,设计好Magrin就可以了

     

     

     

    2008年12月25日 9:38
    版主

全部回复

  • 在你页面嵌入Silverlight的时候,VS08的嵌入方式是100%,你指定上层DIV的大小就可以了,浏览器就出现滚动条了

    Code Snippet

    <div id="silverlightControlHost" style="width:1000px;height:2000px">
      <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
       <param name="source" value="ClientBin/MSDNSL.xap"/>
       <param name="onerror" value="onSilverlightError" />
       <param name="background" value="white" />
       <param name="minRuntimeVersion" value="2.0.31005.0" />
       <param name="autoUpgrade" value="true" />
      </object>
      <iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe>
    </div>

     

     

    可以根据你UserControl大小指定
    2008年12月24日 5:19
    版主
  •  

    谢谢你的回答.

    我的整个网站都是用一个silverlight控件做的,所以UserControl的高度不是固定的,除了这种指定高度的方法,还有其他方法吗?

    2008年12月25日 7:24
  • Code Snippet

    <div style="width:auto;height:auto;">

    <!-- 中间放置Siverlight控件 -->

    </div>

     

     

     

    2008年12月25日 8:06
    版主
  • 还是不行啊,Siverlight控件的高度始终是浏览器窗口的高度,或者是Siverlight控件内已确定的高度,而不会加上"Auto"的高度

    2008年12月25日 9:05
  • 如果高度不同,你还可以在SL的cs代码里设置HTML的高度啊。cs里面应该知道自己的高度吧
    2008年12月25日 9:28
    版主
  •  

    Code Snippet
        <div id="silverlightControlHost" style="width:1200px;height:1024px;min-height:1024px">
      <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="1200" height="1024">
       <param name="source" value="ClientBin/MSDNSL.xap"/>
       <param name="onerror" value="onSilverlightError" />
       <param name="background" value="white" />
       <param name="minRuntimeVersion" value="2.0.31005.0" />
       <param name="autoUpgrade" value="true" />
      </object>  
        </div>

     

     

     

    以object形式页面插入Silverlight控件更好控制,一个是外层DIV的大小,你指定了,如果浏览器展示部分超过这个宽度或高度就会出现滚动条,还有一个是里面object的大小.设置成为100%sl原有大小如果超出了就会自动隐藏掉

     

    你是要里面的div大小是固定的,就是长出去想ie出现滚动条?还是要外面的div多大,里面的object就多大?

     

    第一种方法就跟div嵌入其他页面元素一样指定宽高就可以了

     

    第二种在程序里面

     

    Code Snippet

                ScaleTransform myScale = new ScaleTransform();
                double sx, sy;
                sx = Application.Current.Host.Content.ActualWidth / 1024;
                sy = Application.Current.Host.Content.ActualHeight / 768;
                myScale.ScaleX = sx;
                myScale.ScaleY = sy;

                LayoutRoot.RenderTransform = myScale;

     

     

    object设置成为100% 100%内部用Canvas做布局

     

    还有一种如果你用Grid做根布局,就不用加上面的代码,设计好Magrin就可以了

     

     

     

    2008年12月25日 9:38
    版主