Можно изменить размер хост-объекта Silverlight в соответствии с элементом содержимого верхнего уровня.Silverlight просто вызывает метод Javascript для изменения размера контейнера на основе изменения размера корневого элемента.
Таким образом, полосы прокрутки браузера включаются вместо того, чтобы требовать полосы прокрутки Silverlight.Это также означает, что страница Silverlight всегда "полноразмерная", насколько это возможно.
Принимая во внимание, что этот код взят из моего Silverlight 2 дня (очень старый), концепция не изменилась.
На странице aspx хостинга у меня есть эта функция Javascript:
<script language="javascript" type="text/javascript">
function ResizeObject(height) {
var host = document.getElementById("Xaml1");
host.style.height = height + "px";
}
</script>
Идентификатор Xaml1
был объектом asp:Silverlight
старой школы, поэтому вам может потребоваться изменить цель.
В конструкторе корневой страницы я добавил обработчик изменения размера:
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 });
}