Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么这个列表视图在滚动时会使整个应用程序崩溃?_C#_Xaml_Listview_Windows Phone 8.1_Win Universal App - Fatal编程技术网

C# 为什么这个列表视图在滚动时会使整个应用程序崩溃?

C# 为什么这个列表视图在滚动时会使整个应用程序崩溃?,c#,xaml,listview,windows-phone-8.1,win-universal-app,C#,Xaml,Listview,Windows Phone 8.1,Win Universal App,“我的列表”是HubSection中唯一的元素。它由以下数据模板定义: <!-- List --> <DataTemplate x:Key="GeofenceEventsList" > <ListView ItemsSource="{Binding EventData}" SelectionMode="None" IsSwipeEnabled="False" IsItemClickEnabled="False" ScrollViewer.Ve

“我的列表”是HubSection中唯一的元素。它由以下数据模板定义:

<!-- List -->
<DataTemplate x:Key="GeofenceEventsList" >
    <ListView ItemsSource="{Binding EventData}" SelectionMode="None" IsSwipeEnabled="False"
        IsItemClickEnabled="False" ScrollViewer.VerticalScrollBarVisibility="Auto"
        ItemTemplate="{StaticResource GeofenceEventsListItem}" />
</DataTemplate>
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));
        //...
    }
//构造函数:
公共地理围栏IEWMODEL(FacebookDataProvider FacebookDataProvider):基础(FacebookDataProvider)
{
_eventData=新的ObservableCollection();
}
//财产:
私有只读可观察收集事件数据;
公共IEnumerable事件数据
{
收到
{
WriteLine(“查询的事件数据”);
返回事件数据;
}
}
OnNavigatedTo()上的公共异步任务
{
//...
var geofengineevents=await-AppCacheSimple.GetItemsAsync(geofengineEventSchema.CacheKey);
_eventData.Clear();
//当我们获取6个或更多项目时,ListView崩溃,滚动变得必不可少
//屏幕可容纳4.9个项目
_AddRange(geoFenceEvents.Take(6));
//...
}
这是WindowsPhone 8.1上运行的通用应用程序的一部分

该应用程序在
列表视图
中有5个或更少的项目时运行正常

当我尝试滚动列表时,列表中有6项会发生崩溃。 (Visual Studio未处理Windows.UI.Xaml.UnhandledException,但无法进行调试,因为手机刚刚关闭应用程序,VS冻结。)


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

不确定,我不是WinPhone开发者,但
ItemsSource=“{Binding EventData}”
,如果不是
ItemsSource=“{Binding Path=EventData}”
?感谢您的评论,但这两种符号在语义上没有区别(请参阅)。'Path'是默认属性,因此可以忽略它。创建(这是winforms的,例如,搜索wpf)并查看内部异常。是的,您是对的。我以前做过一个WPF桌面应用程序,我记得这些错误有时会出现在细节中。但是您确定从
var geofengineevents=await-AppCacheSimple.GetItemsAsync…
获得6个或更多项目吗?我不确定如果项目较少,
…Take(6)
是否会抛出异常。好的,这些东西只是为了调试——以一种非常绝望的方式。当前,第一行(
var geofengineevents=await-AppCacheSimple.GetItemsAsync…
)始终返回8项。我们的目标是只让
\u eventData.AddRange(geoFenceEvents)
,并让ListView正确地显示它们,而不考虑项目的数量(不过我不希望超过100个项目)。
    //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));
        //...
    }