Unset DependencyProperty抛出NullReferenceException

时间:2014-02-06 10:19:00

标签: c# exception windows-store-apps dependency-properties

我正在开发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应用商店应用上运行?

1 个答案:

答案 0 :(得分:0)

您已在null声明的末尾将默认值设置为DependencyProperty。将其设置为ItemDisplayType.None。您可能可以使用default(ItemDisplayType),但我不确定这是否有效。

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