浏览器刷新时不会加载Silverlight页面

时间:2011-06-14 10:15:00

标签: silverlight data-binding silverlight-4.0 mvvm

我有一个Silverlight应用程序,我遇到了问题。

正常加载时页面效果很好 - 通过Web浏览器或安装到桌面时。 当有人点击刷新时,浏览器会出现问题。

当它们点击刷新(F5)时,没有加载数据,控件呈现但数据绑定的是空的。 他们有一个javascript错误,出现在IE的底部。

网页错误详情

  

消息:未处理的错误   Silverlight Application提供价值   在'System.Windows.Data.Binding'投掷   一个例外。 [线路:74位置:57]   在   MS.Internal.XcpImports.MethodEx(IntPtr的   ptr,String name,CValue [] cvData)
  在   MS.Internal.XcpImports.MethodEx(DependencyObject的   obj,String name)at   MS.Internal.XcpImports.DataTemplate_LoadContent(DataTemplate中   模板)   System.Windows.Controls.DataGridTemplateColumn.GenerateElement(DataGridCell   cell,Object dataItem)at   System.Windows.Controls.DataGrid.PopulateCellContent(布尔   isCellEdited,DataGridColumn   dataGridColumn,DataGridRow   dataGridRow,DataGridCell   dataGridCell)at   System.Windows.Controls.DataGrid.AddNewCellPrivate(DataGridRow   row,DataGridColumn列)   System.Windows.Controls.DataGrid.CompleteCellsCollection(DataGridRow   dataGridRow)at   System.Windows.Controls.DataGrid.GenerateRow(的Int32   rowIndex,Int32 slot,Object   dataContext)at   System.Windows.Controls.DataGrid.InsertElementAt(的Int32   slot,Int32 rowIndex,Object item,   DataGridRowGroupInfo groupInfo,   Boolean isCollapsed)at   System.Windows.Controls.DataGrid.InsertRowAt(的Int32   rowIndex)at   System.Windows.Controls.DataGridDataConnection.NotifyingDataSource_CollectionChanged(对象   发件人,   NotifyCollectionChangedEventArgs e)
  在   System.Windows.Data.PagedCollectionView.OnCollectionChanged(NotifyCollectionChangedEventArgs   args)at   System.Windows.Data.PagedCollectionView.ProcessAddEvent(对象   addedItem,Int32 addIndex)at   System.Windows.Data.PagedCollectionView.ProcessCollectionChanged(NotifyCollectionChangedEventArgs   args)at   System.Windows.Data.PagedCollectionView< .ctor> B_ 0(对象   发件人,   NotifyCollectionChangedEventArgs args)   在   System.Collections.ObjectModel.ObservableCollection 1.OnCollectionChanged(NotifyCollectionChangedEventArgs e) at System.Collections.ObjectModel.ObservableCollection 1.InsertItem(的Int32   index,T item)at   System.Collections.ObjectModel.Collection`1.Add(T   项目)   MyProject.Silverlight.MyViewModel.b _3(对象   Param,GetDataCompletedEventArgs   EventArgs)at   MyProject.Silverlight.WebServicesSVC.WebServicesClient.OnGetDataCompleted(对象   行):1个字符:1个代码:0

如果[Line:74 Position:57]来自xaml文件,则错误是中间行:

<sdk:DataGridTemplateColumn Header="Edit Details">
    <sdk:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button Command="{Binding UpdateCommand, Source={StaticResource ViewModel}}" CommandParameter="{Binding}" Content="Update" />
        </DataTemplate>
    </sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>

即[Button ...]行,位置57是“{Binding ..}”在Command =中开始的位置。

- 正如我所说,只有在使用IE的刷新按钮刷新页面时才会发生这种情况,并且每次都会在多台PC上发生。

其他细节: Internet Explorer 8 客户端PC:Windows XP 托管服务器:Windows Server 2005(如果没有像2005这样的东西,则为2003)。 Silverlight 4

任何人都可以解释什么是错的吗?刷新的处理方式与正常加载页面的方式有何不同?

1 个答案:

答案 0 :(得分:0)

当我在我的silverlight项目的部署版本中出现javascript错误时,它几乎总是我的应用程序在后面代码中的逻辑问题。 YMMV。

鉴于你有SL4,你可能无法在XAML中放置调试点。 我想在不同的盒子上提及SL5 beta,并且部署了你的代码以获得该功能以帮助调试。

或者,您可以按照以下软件刷新

Can Silverlight initiate Page Refreshes?

然后查看您的应用是否表现不同。