1

在我清除 Bing 地图的图钉并打开弹出窗口后,我的应用程序崩溃了。这是我在调试器中看到的:

在此处输入图像描述

文本块绝对不为空 - 它是在 XAML 中以声明方式定义的。

字符串列表 (CurrentlyMappedPhotosets) 不为空 - 如您所见,它包含一个字符串 / 计数为 1。

在尖叫声中看到之前的代码是:

int count = App.CurrentlyMappedPhotosets.Count;

什么可以在这里为空?

就在这发生之前,我调用了 ClearMap:

private void ClearMap()
{
    var mapLayerChildren = from c in DataLayer.Children select c;
    var kinderGarten = mapLayerChildren.ToArray();
    for (int i = 0; i < kinderGarten.Count(); i++)
    {
        if (kinderGarten[i] is Pushpin)
        {
            DataLayer.Children.Remove(kinderGarten[i]);
        }
    }

    CloseInfobox();

    App.CurrentlyMappedPhotosets.Clear(); 
    if (null != App.photosetLocationCollection)
    {
        App.photosetLocationCollection.Clear();
    }
    appbarbtnClearMap.IsEnabled = false;
    UpdateGUI(false);
}

...调用 UpdateGUI():

private void UpdateGUI(bool resizeMap)
{
    appbarbtnRenamePhotoset.IsEnabled = App.CurrentlyMappedPhotosets.Count > 0;
    if (resizeMap)
    {
        ResizeMap();
    }
}
4

1 回答 1

2

您是否查看过集合中的值是否不为空?任何非原始类型类如果没有用值构造,则默认为 null。

因此,您可以拥有尽可能多的空值类型。

我建议您通过将行更改为:

textblock0.Text = App.CurrentlyMappedPhotosets[0].HasValue ? App.CurrentlyMappedPhotosets[0].Value : "";
于 2014-11-20T10:06:10.617 回答