Есть ли способ «закрепить» элемент управления Silverlight в окне браузера? Например, я хотел бы иметь заголовок HTML в верхней части страницы, а затем, чтобы элемент управления Silverlight занимал точно остальную часть окна, аккуратно изменяя размер при изменении размера окна.
Страница по умолчанию, которую создает Visual Studio, использует стили со 100% шириной и высотой, чтобы элемент управления Silverlight занимал все окно. И я могу легко изменить этот шаблон, чтобы разделить страницу по процентам (скажем, 20% заголовка HTML и 80% элемента управления Silverlight). Но на самом деле я хочу, чтобы высота заголовка была статической, а элемент управления Silverlight занимал 100% оставшегося окна.






Вы по-прежнему можете использовать свой CSS для этого. Просто сделайте свой заголовок DIV желаемого размера, а затем контейнер DIV для элемента Silverlight будет 100% / 100%.
Если я неправильно понял ваше предложение, и вы можете выполнить эту работу, не могли бы вы привести быстрый пример?
Вот решение на JavaScript. Сначала вы создаете эту функцию:
<script type = "text/javascript">
function resizeSLHost()
{
var docHeight = document.body.offsetHeight;
var pluginHeight = docHeight - 130;
var slplugin = document.getElementById("silverlightControlHost");
slplugin.style.height = pluginHeight + "px";
}
</script>
Затем в открывающем теге body вы говорите:
<body onload = "resizeSLHost()" onresize = "resizeSLHost()">
И вы помещаете свой div заголовка прямо перед div хоста Silverlight:
<div id = "header" style = "height:130px"></div>
<div id = "silverlightControlHost">
<object data = "data:application/x-silverlight-2" type = "application/x-silverlight-2" width = "100%" height = "100%">
// the usual stuff here...
</object>
<iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe>
</div>
Конечно, число, которое вы вычитаете из docHeight в resizeSLHost (), должно быть равно высоте заголовка div.
, что у меня работало в IE 7 и Firefox 3.0.4.
Я пробовал это, но 100% высота, кажется, означает 100% высоты содержащего элемента, а не 100% высоты содержащего элемента минус заголовок div. Таким образом, конечным результатом является вертикальная полоса прокрутки, потому что элемент управления Silverlight слишком велик точно по высоте div заголовка.