2014-02-06 3 views
0

Я работаю над приложением 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?

ответ

0

У вас установлено значение по умолчанию null в конце вашего объявления DependencyProperty. Установите его на ItemDisplayType.None. Возможно, вы сможете использовать default(ItemDisplayType), но я не уверен, что это сработает.

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

Вы абсолютно правы, конечно. Но это была ошибка при написании кода примера. Настоящий код верен и все еще показывает описанную проблему. Я исправил код в своем вопросе. –

Смежные вопросы