2014-02-06 77 views
0

我正在使用Windows應用商店應用。自定義類使用枚舉類型的DependencyProperty。當我嘗試訪問此屬性而未在應用程序崩潰之前將其設置爲NullReferenceException。在Windows Phone上運行相同的代碼沒有任何問題。取消設置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應返回默認值:

如果沒有指定默認值,對於一個依賴屬性的默認值爲null引用類型,或類型的值,默認類型或語言原語(例如,整數爲0或字符串爲空字符串)。

那麼這裏是什麼問題呢?爲什麼此代碼在Windows Phone上運行,而不是在Windows Store應用程序上運行?

回答

0

您已在DependencyProperty聲明的末尾將缺省值設置爲null。將其設置爲ItemDisplayType.None。您可以使用default(ItemDisplayType),但我不確定這是否可行。

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

你是絕對正確的。但是,在這裏編寫示例代碼時,這只是一個錯誤。真實的代碼是正確的,仍然顯示所描述的問題。我已經修復了我的問題中的代碼。 –

相關問題