我正在开发Windows应用商店应用。自定义类使用枚举类型的DependencyProperty。当我尝试访问此属性而没有在应用程序崩溃与NullReferenceException之前设置它。在Windows Phone上运行相同的代码没有任何问题。
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);
}
}
}
我不明白这里有什么问题。根据{{3}},未设置的DependencyProperty应该返回默认值:
如果未指定默认值,则依赖项属性的默认值对于引用类型为null,或者为值类型或语言原语的默认值(例如,0表示整数或空字符串)为一个字符串)。
那么这里的问题是什么?为什么此代码在Windows Phone上运行而不在Windows应用商店应用上运行?
答案 0 :(得分:0)
您已在null
声明的末尾将默认值设置为DependencyProperty
。将其设置为ItemDisplayType.None
。您可能可以使用default(ItemDisplayType)
,但我不确定这是否有效。
public static readonly DependencyProperty DisplayTypeProperty = DependencyProperty.Register("DisplayType", typeof(ItemDisplayType), typeof(CustomClass), ItemDisplayType.None);