我清除Bing图钉的Bing Map然后打开弹出按钮后,我的应用程序崩溃了。这是我在调试器中看到的:
textblock绝对不是null - 它是在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();
}
}
答案 0 :(得分:2)
您是否查看过该集合中的值是否为空? 如果没有使用值构造,则任何非基本类型类默认为null。
因此,您可以拥有所尝试类型的空值。
我建议您通过将行更改为:
来进行测试textblock0.Text = App.CurrentlyMappedPhotosets[0].HasValue ? App.CurrentlyMappedPhotosets[0].Value : "";