Microsoft Blend: Как прокрутить сайт? - PullRequest
0 голосов
/ 14 августа 2011

Я хочу сделать обычный веб-сайт с прокруткой, с размещением всего контента на первом экране.

Я создал приложение Silverlight + сайт. Я увеличил размер холста UserControl и заполнил всю страницу своей обычной информацией.

Я сделал Run Project. Браузер запускается и показывает только первый экран. Остальное усекается и прокрутка не появляется.

Как добавить обычную прокрутку на сайт, чтобы я мог видеть остальную часть страницы Silverlight?

Ответы [ 2 ]

1 голос
/ 14 августа 2011

Ваша текущая веб-страница HTML в основном говорит: «Пожалуйста, измените размер моего объекта Silverlight, чтобы он соответствовал 100% размера браузера».

<object data="data:application/x-silverlight-2," 
    type="application/x-silverlight-2"
    width="100%" height="100%">

Это означает, что основной объект Silverlight имеет тот же размер, что и браузер.

Необходимо либо добавить полосы прокрутки в приложении Silverlight, либо изменить размер приложения Silverlight, чтобы оно было больше, чембраузер.

Есть несколько способов.

1.Используйте ScrollViewer в корне вашего основного вида

Сначала вы можете просто поместить scrollViewer в качестве самого верхнего контейнера на главной странице Silverlight.Это проще всего, если это работает для вашего конкретного случая.

Вы помещаете Grid в средство просмотра прокрутки так, чтобы вы начинали с той же базовой компоновки, что и без ScrollViewer.

2.Изменение размера объекта Silverlight динамически

Другой способ (очень старый) - динамическое изменение размера размещаемого объекта Silverlight на странице при изменении содержимого страницы.Затем вы получите Web-полосы прокрутки.

Это можно сделать, выполнив вызов Javascript из основного окна XAML.

В конструкторе основного представления перехватите изменение размера:

LayoutRoot.SizeChanged += new SizeChangedEventHandler(LayoutRoot_SizeChanged);

В главном представлении добавьте обработчик событий:

    void LayoutRoot_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        ResizeSilverlightObject(e.NewSize.Height);
    }

    private void ResizeSilverlightObject(double height)
    {
        // Now resize the actual Silverlight container to match the layout size
        HtmlPage.Window.Invoke("ResizeObject", new object[] { height });
    }

Javascript на странице ASPX / HTML хостинга выглядит так:

<script language="javascript" type="text/javascript">
    function ResizeObject(height) {
        var host = document.getElementById("SilverlightApp");
        host.style.height = height + "px";
    }    
</script>

В приведенном выше JavaScript предполагается, что вы назвали свойОбъект Silverlight с использованием id = "SilverlightApp".например,

<object id="SilverlightApp"
    data="data:application/x-silverlight-2," 
    type="application/x-silverlight-2"
    width="100%" height="100%">

Всякий раз, когда страница Silverlight расширяется, чтобы соответствовать ее содержимому, она изменяет размер веб-объекта Silverlight до того же размера, что и страница.Полосы прокрутки веб-браузера будут работать нормально.

0 голосов
/ 14 августа 2011

Я нашел решение! При создании проекта выберите Silverlight SketchFlow Приложение. Не совсем что вы хотите, но, по крайней мере, это работает отлично .

...