2014-11-20 52 views
1

푸시 핀의 Bing Map을 지운 다음 플라이 아웃을 열면 내 앱이 충돌합니다. 이것은 내가 디버거에서 볼 것입니다 :여기에 null이 될 수 있습니까?

enter image description here

TextBlock을 확실히 null이 아닌 - 그것은 XAML에 선언적으로 정의된다.

문자열 (CurrentlyMappedPhotosets)의 목록은 null이 아닌 - 당신이 볼 수 있듯이, 그것은/문자열을 포함 바로 비명 샷에서 볼 무엇을하기 전에 1.

코드의 수를되어 있습니다

int count = App.CurrentlyMappedPhotosets.Count; 

여기에는 null이 포함될 수 있습니다. UpdateGUI()를 호출하는 ...

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); 
} 

: 이런 일이 발생하기 직전

, 나는 ClearMap 전화

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

는 App.CurrentlyMappedPhotosets [0]'null' –

+0

이 응용 프로그램은 응용 프로그램 자체입니다'있다'처럼 보인다는 앱에서 자신을 표현하는 방법 .xaml.cs –

+1

CurrentlyMappedPhotosets 목록 또는 다른 데이터 집합입니까? 데이터가 인덱스 3이나 5 등에 저장되어있을 수도 있습니다. – Vajura

답변

2

당신은 컬렉션의 값 존재 null가 아닌 경우 봤어? 비 기본 유형 클래스는 값으로 생성되지 않은 경우 기본적으로 null입니다.

그래서 당신은 당신이 가지고있는 타입의 null 값을 가질 수 있습니다.

I가 라인을 변경하여 테스트를 할 것을 제안 :

textblock0.Text = App.CurrentlyMappedPhotosets[0].HasValue ? App.CurrentlyMappedPhotosets[0].Value : ""; 
+0

흥미 롭; 나는 이것을 내일 아침에 시도 할 것이다. (그렇게 할 첫 번째 기회가 될 것이다.) –