none
Динамический размер Silverlight 4 содержимого. RRS feed

  • Вопрос

  • Привет всем!

    Как можно реализовать динамическое изменение div-а, в котором находится silverlight содержимое, при изменении последнего?

    Размер дива не указываю, мне нужно чтобы его размер ( в частности высота), увеличися автоматически, при увеличении содержимого silverlight.

    private void Page_Loaded(object sender, RoutedEventArgs e)
            {
                HtmlElement element = HtmlPage.Document.GetElementById("scontent");
                element.SetStyleAttribute("height", this.Height + "px");
            }
            private void MainPage_SizeChanged(object sender, SizeChangedEventArgs e)
            {
                HtmlElement element = HtmlPage.Document.GetElementById("scontent");
                element.SetAttribute("height", this.ActualHeight + "px");
            }
    

    Но не получается, так как this.ActualHeight имеет значение, в моём случае 192px, что в несколько раз меньше фактического содержимого. И высота дива, становится такой, поэтому всё содержимое не помещается.

     

    2 ноября 2011 г. 11:26
    Модератор

Ответы

Все ответы

  • Здравствуйте.

    А чем вам не подходит установка размера div-а в процентах, и выделение под silverlight приложение 100% высоты и ширины div-а?


    Для связи [mail]
    3 ноября 2011 г. 14:11
    Модератор
  • Да, но в этом случае, при увеличении silverlight содержимого, размер дива не увеличивается, он остаётся равной размеру окна браузера, и содержимое попросту туда не помещается и обрезается. А мне нужно, чтобы при увеличении div вертикально растягивался и у браузера появилась вертикальная полоса прокрутки. 
    4 ноября 2011 г. 5:13
    Модератор
  • Попробуйте вместо ActualHeight использовать RenderSize.Height.

    Посмотрите темы - Silverlight with Dynamic Height и silverlight limited to 100% browser height, возможно они помогут вам в решении проблемы.


    Для связи [mail]
    • Помечено в качестве ответа YatajgaEditor 8 ноября 2011 г. 5:58
    7 ноября 2011 г. 10:57
    Модератор
  • Спасибо большое Дмитрий, не первый раз выручаете. Первая ссылка как раз то, что я искал и не мог найти. А кому итересно, вот полное решение.

    CSS
    
    *{margin: 0;padding: 0}
    html, body{}
    #topbar{width: 100%;height: 30px;background-color: #003300}
    #scontent{width: 100%; height: 100%;text-align: center;}
    
    HTML
    
    <body>
        <div id="topbar">
            Добро пожаловать
            @HttpContext.Current.User.Identity.Name; <a href="@Href("~/account/logout")">Выйти</a>
        </div>
        <div id="scontent">
            <object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
                width="100%" height="100%">
                <param name="source" value="ClientBin/CMS.xap" />
                <param name="background" value="white" />
                <param name="minRuntimeVersion" value="4.0.60129.0" />
                <param name="autoUpgrade" value="true" />
                <a href="http://www.microsoft.com/getsilverlight/get-started/install/" style="text-decoration: none">
                    <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight"
                        style="border-style: none" />
                </a>
            </object>
            <script type="text/javascript">
                function ResizeObject(val) {
                    var host = document.getElementById("scontent"); 
                    host.style.height = val + "px";
                }     
            </script>
        </div>
    </body>
    
    
    

     

    private void LayoutRoot_LayoutUpdated(object sender, EventArgs e)
            {
                ResizeSilverlightObject(this.LayoutRoot.RenderSize.Height); 
            }
            private void ResizeSilverlightObject(double height)
            {
                HtmlPage.Window.Invoke("ResizeObject", new object[] { height });
            }
    

    Теперь содержимое браузера меняется динамически, в зависимости от silverlight содержимого.


    8 ноября 2011 г. 5:58
    Модератор