2014-02-06 4 views
0

Windows Store App에서 작업 중입니다. 사용자 정의 클래스는 열거 유형의 DependencyProperty를 사용합니다. NullReferenceException 응용 프로그램이 충돌하기 전에 설정하지 않고이 속성에 액세스하려고합니다. 동일한 코드가 Windows Phone에서 아무런 문제없이 실행됩니다.Unset DependencyProperty가 NullReferenceException을 던졌습니다.

public enum ItemDisplayType { 
    None, 
    Detail, 
    Any, 
} 

public class CustomClass : UserControl { 
    public CustomClass() { 
     // No crash when DisplayType is set 
     // DisplayType = ItemDisplayType.Any; 
     this.InitializeComponent(); 
    } 

    public static readonly DependencyProperty DisplayTypeProperty = DependencyProperty.Register("DisplayType", typeof(ItemDisplayType), typeof(CustomClass), null); 
    public ItemDisplayType DisplayType{ 
     get { return (ItemDisplayType)GetValue(DisplayTypeProperty); } 
     set { 
      SetValue(DisplayTypeProperty, value); 
     } 
    } 
} 

여기서 무슨 문제인지 이해할 수 없습니다. documentation에 따른 해제 된 DependencyProperty 기본값 반환해야 디폴트 값을 지정하지 않으면

을 종속성 속성의 디폴트 값은 참조 형식 또는 값 유형의 기본을위한 널 유형 또는 언어 프리미티브 (예 : 정수의 경우 0, 문자열의 경우 빈 문자열).

그래서 여기에 무슨 문제가 있습니까? 이 코드가 Windows Phone 응용 프로그램이 아닌 Windows Phone에서 실행되는 이유는 무엇입니까?

답변

0

DependencyProperty 선언 끝에 기본값을 null으로 설정했습니다. ItemDisplayType.None으로 설정하십시오. default(ItemDisplayType)을 사용할 수는 있을지 모르겠지만 제대로 작동하는지 확신 할 수 없습니다.

public static readonly DependencyProperty DisplayTypeProperty = DependencyProperty.Register("DisplayType", typeof(ItemDisplayType), typeof(CustomClass), ItemDisplayType.None); 
+0

물론 당신은 당연히 당연한 것입니다. 그러나 여기에 예제 코드를 작성할 때 이것은 단지 오류 일뿐입니다. 실제 코드는 정확하며 설명 된 문제는 여전히 나타납니다. 내 질문에 코드를 수정했습니다. –

관련 문제