1

Bing マップの画鋲を消去してフライアウトを開くと、アプリがクラッシュします。これは、デバッガーに表示されるものです。

ここに画像の説明を入力

textblock は間違いなく null ではありません。XAML で宣言的に定義されています。

文字列のリスト (CurrentlyMappedPhotosets) は null ではありません - ご覧のとおり、文字列が含まれています / カウントは 1 です。

悲鳴を上げるショットの直前のコードは次のとおりです。

int count = App.CurrentlyMappedPhotosets.Count;

ここでnullになる可能性があるのは何ですか?

これが発生する直前に、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 でないか調べましたか? 値で構築されていない場合、非プリミティブ型クラスはデフォルトで null です。

したがって、取得しようとしている型の null 値をいくつでも持つことができます。

行を次のように変更してテストを行うことをお勧めします。

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