簡體   English   中英

未設置DependencyProperty引發NullReferenceException

[英]Unset DependencyProperty throws NullReferenceException

我正在使用Windows Store應用程序。 自定義類使用枚舉類型的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);
        }
    }
}

我不明白這里出了什么問題。 根據文檔,未設置的DependencyProperty應該返回默認值:

如果未指定默認值,則對於引用類型,依賴項屬性的默認值為null;對於值類型或語言原語,該類型的默認值為null(例如,對於整數,為0;對於字符串,為空字符串) )。

那么這是什么問題呢? 為什么此代碼在Windows Phone而不是Windows Store Apps上運行?

您已在DependencyProperty聲明的末尾將默認值設置為null 將其設置為ItemDisplayType.None 您可能可以使用default(ItemDisplayType) ,但不確定是否可以使用。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM