#silverlight-4.0 #sdk
#silverlight-4.0 #sdk
Вопрос:
Это периодически возникающая проблема, когда верхние 192 пикселя приложения закрашиваются и работают идеально, но все, что находится ниже, в браузере белое и не реагирует на клики.
Это началось около месяца назад, но не происходило на компьютере разработчика до сегодняшнего дня. На тестовом сервере это происходило в разных браузерах в разное время, но в Firefox, Chrome и IE 8 сбой происходит гораздо чаще, чем в IE 7. Иногда вся клиентская область браузера белая, а не только часть ниже 192 пикселей; Я предполагаю, что это связанная проблема, но я не уверен.
Сегодня на компьютере разработчика он не работает в IE (как во внутреннем браузере Visual Studio, так и в IE 8) и FF, но работает в Chrome.
Вот подробности:
- Silverlight 4, Entity Framework 4 со службами RIA и VS 2010.
- Используя точки останова в отладчике, я вижу, что фактическая высота главной страницы становится 192 пикселя.
- Если я вручную установлю minHeight или Height равным 1000 пикселям, то фактическая высота в отладчике будет равна 1000, но все, что ниже 192 пикселов, по-прежнему будет белым.
- Фактическая высота равна 0 до тех пор, пока сразу после возврата конструктора для главной страницы отладчик не покажет, что его фактическая высота равна 192.
- Конструктор содержит только одну инструкцию — InitializeComponent();
- Я установил цвет фона главной страницы на зеленый, и все, что ниже 192, по-прежнему белое.
- Содержимое главной страницы окружено рамкой. Граница выглядит нормально, за исключением того, что ее нижняя часть была обрезана, поэтому все белое ниже 192 пикселей.
- Я удалил большую часть содержимого главной страницы и изменил код так, чтобы вызывались только Application_Startup (содержащий только this.RootVisual = new MainPage();) и конструктор для MainPage (содержащий только InitializeComponent();) . Я также проверил в отладчике (используя точки останова и одиночное пошаговое выполнение), что больше ничего не выполняется. Проблема по-прежнему возникает точно так же, как и раньше.
Кто-нибудь может предложить исправление или дальнейшую диагностику? Заранее спасибо.
DEFAULT.ASPX
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="iVG.Web.Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>iVoterGuide.com</title>
<style type="text/css">
html, body {
height: 100%;
overflow: auto;
}
body {
padding: 0;
margin: 0;
}
#silverlightControlHost {
height: 100%;
text-align:center;
}
</style>
<script type="text/javascript" src="Silverlight.js"></script>
<script type="text/javascript">
function onSilverlightError(sender, args) {
var appSource = "";
if (sender != null amp;amp; sender != 0) {
appSource = sender.getHost().Source;
}
var errorType = args.ErrorType;
var iErrorCode = args.ErrorCode;
if (errorType == "ImageError" || errorType == "MediaError") {
return;
}
var errMsg = "Unhandled Error in Silverlight Application " appSource "n";
errMsg = "Code: " iErrorCode " n";
errMsg = "Category: " errorType " n";
errMsg = "Message: " args.ErrorMessage " n";
if (errorType == "ParserError") {
errMsg = "File: " args.xamlFile " n";
errMsg = "Line: " args.lineNumber " n";
errMsg = "Position: " args.charPosition " n";
}
else if (errorType == "RuntimeError") {
if (args.lineNumber != 0) {
errMsg = "Line: " args.lineNumber " n";
errMsg = "Position: " args.charPosition " n";
}
errMsg = "MethodName: " args.methodName " n";
}
throw new Error(errMsg);
}
function CloseMainWindow(x) {
window.close();
}
</script>
</head>
<body onload="document.getElementById('SilverlightControl').focus();">
<form id="form1" runat="server"> <%--style="height:100%"--%>
<div id="silverlightControlHost">
<object id="SilverlightControl" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="ClientBin/iVG.xap"/>
<param name="enableHtmlAccess" value="true" />
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="4.0.50401.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156amp;v=4.0.50401.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>
</div>
</form>
</body>
</html>
MAINPAGE.XAML
<Grid x:Name="LayoutRoot" Style="{StaticResource GridRoot}" Background="Green" Loaded="LayoutRoot_Loaded">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid Style="{StaticResource GridMenu}" Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Sticky:Tab x:Name="TabMenu" DisplayMemberPath="Text" Style="{StaticResource MainTabMenu}" Grid.Column="1" SelectionChanged="TabMenu_SelectionChanged" Margin="0"/>
</Grid>
<Grid Grid.Row="1">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Top">
<TextBlock FontSize="{StaticResource FontSizeSmall}" VerticalAlignment="Center" Foreground="Black" x:Name="BlockSignedIn"/>
</StackPanel>
<Border x:Name="BorderContent" Style="{StaticResource BorderContent}">
<Grid HorizontalAlignment="Stretch">
<TextBlock Margin="0,-6,-2,0" HorizontalAlignment="Right" VerticalAlignment="Top" FontSize="{StaticResource FontSizeSmall}" Foreground="Black" x:Name="BlockTimestamp"/>
<StackPanel>
<Border Style="{StaticResource BorderPageHeader}">
<TextBlock x:Name="BlockHeader" Style="{StaticResource BlockPageHeader}" Text=""/>
</Border>
<navigation:Frame x:Name="ContentFrame" Style="{StaticResource ContentFrame}" MinHeight="300" Navigating="ContentFrame_Navigating"
Navigated="ContentFrame_Navigated" NavigationFailed="ContentFrame_NavigationFailed">
<navigation:Frame.UriMapper>
<sdk:UriMapper>
<sdk:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/>
</sdk:UriMapper>
</navigation:Frame.UriMapper>
</navigation:Frame>
<Grid Height="5"/>
<Border Style="{StaticResource BorderPageFooter}">
<TextBlock x:Name="BlockVersion"/>
</Border>
</StackPanel>
</Grid>
</Border>
<Grid Visibility="Collapsed" VerticalAlignment="Top" Background="Red" x:Name="GridDebug">
<TextBlock Text="DEBUG" FontWeight="Bold" Foreground="White" Margin="2"/>
</Grid>
</Grid>
</Grid>
Ответ №1:
У меня получилось, хотя я понятия не имею, почему. В строке ниже на странице Default.aspx я изменил height = «100%» на height = «2000»
<object id="SilverlightControl" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
Если параметр «высота» опущен или задано значение «авто», он все равно не работает. Также происходит сбой (по-другому), если «высота» слишком велика — например, 5000.