В IE7 нет полос прокрутки для переполнения элемента управления Silverlight - PullRequest
0 голосов
/ 16 марта 2011

auto Я работал над приложением Silverlight 4, встроенным в веб-приложение ASP.NET. Упомянутый элемент управления 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 style (который показывает полосу прокрутки, но на самом деле вообще не прокручивает?), Устанавливая статические размеры на <object>, но это тоже не работает. Имейте в виду, что высота этого элемента управления изменяется даже после времени загрузки страницы (элемент управления Silverlight переключается между RootVisuals различной высоты).

У любого гуру в IE7 есть идея, как обойти эту проблему? Спасибо.

Ответы [ 2 ]

2 голосов
/ 17 марта 2011

Дэйв,

иногда кажется полезным добавить следующие стили:

<style type="text/css">
html, body {
    height: 100%;
    overflow: auto;
}

body {
    padding: 0;
    margin: 0;
}

#silverlightControlHost {
    height: 100%;
    text-align:center;
}
</style>

стили для html, body здесь наиболее важны.

UPDATE

также может помочь изменение размера управляющего хоста silverlight div изнутри silverlight. Я нашел этот пример кода, вы можете прикрепить его к вашему событию изменения размера.

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)

НТН

0 голосов
/ 12 августа 2012

У меня была похожая проблема, и я решил ее, добавив стиль к html, body - минимальные элементы ширины и высоты.* Для меня это работает на Opera 12 и IE 9

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...