![](/img/trans.png)
[英]Silverlight Binding to UserControl's DependencyProperty throws 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.