为什么这个ListView会在滚动时使整个应用程序崩溃?

时间:2014-11-06 12:15:01

标签: c# xaml listview windows-phone-8.1 win-universal-app

我的列表是HubSection中唯一的元素。它由以下DataTemplate定义:

<!-- List -->
<DataTemplate x:Key="GeofenceEventsList" >
    <ListView ItemsSource="{Binding EventData}" SelectionMode="None" IsSwipeEnabled="False"
        IsItemClickEnabled="False" ScrollViewer.VerticalScrollBarVisibility="Auto"
        ItemTemplate="{StaticResource GeofenceEventsListItem}" />
</DataTemplate>

GeofenceEventsListItem数据模板很简单:一个Grid有3行,每行有一个文本块(第一行在StackPanel中有3个文本块)。

以下ListView引用了Hub

     <Hub x:Name="Container" Grid.Row="1" Background="{StaticResource AppBackground}" 
         HeaderTemplate="{StaticResource PageHeader}">
        <HubSection HeaderTemplate="{StaticResource HubHeader}" 
                    Header="Recent events" 
                    DataContext="{Binding Path=GeofencesViewModel}" 
                    ContentTemplate="{StaticResource GeofenceEventsList}" />

        <HubSection HeaderTemplate="{StaticResource HubHeader}" 
                    Header="Geofences" 
                    DataContext="{Binding Path=GeofencesViewModel}" 
                    ContentTemplate="{StaticResource GeofencesList}" />

        <!-- Other HubSections... -->
    </Hub>

后面的ViewModel的关键部分如下所示:

    //Constructor:
    public GeofencesViewModel(FacebookDataProvider facebookDataProvider) : base(facebookDataProvider)
    {
        _eventData = new ObservableCollection<GeofenceEventSchema>();
    }

    //Property:
    private readonly ObservableCollection<GeofenceEventSchema> _eventData;
    public IEnumerable<GeofenceEventSchema> EventData
    {
        get
        {
            Debug.WriteLine("EventData queried.");
            return _eventData;
        }
    }

    public async Task OnNavigatedTo()
    {
        //...
        var geoFenceEvents = await AppCacheSimple.GetItemsAsync<GeofenceEventSchema>(GeofenceEventSchema.CacheKey);
        _eventData.Clear();

       //ListView crashes when we take 6 or more items, and scrolling becomes neccessary
       //The screen can fit 4.9 items
        _eventData.AddRange(geoFenceEvents.Take(6));
        //...
    }

这是在WindowsPhone 8.1上运行的通用应用程序的一部分。

该应用适用于ListView中的5个或更少项目。

当我尝试滚动列表时,列表中有6个项目发生崩溃。 (Visual Studio可以使用Windows.UI.Xaml.UnhandledException,但调试是不可能的,因为手机只关闭了应用程序并且VS冻结了。)

列表中有8个项目,应用程序在加载页面后立即崩溃:VS根本无法捕获任何内容,甚至没有意识到应用程序已关闭。

0 个答案:

没有答案