Я работаю над приложением Windows Store. Пользовательский класс использует DependencyProperty типа перечисления. Когда я пытаюсь получить доступ к этому свойству, не установив его перед сбоем приложения с помощью исключения NullReferenceException. Этот же код работает без проблем на Windows Phone.Unset DependencyProperty throws 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 Store Apps?
Вы абсолютно правы, конечно. Но это была ошибка при написании кода примера. Настоящий код верен и все еще показывает описанную проблему. Я исправил код в своем вопросе. –