當嵌套集合屬性存在時,我在XCeed WPF propertygrid控件中收到異常。行爲是明確的和可重複的,但非常奇怪。WPF PropertyGrid拋出奇怪的NullReferenceException僅在成員非空時
下面是一個例子的類結構:
Public Class MyTestBigClass
Public Property FirstProperty As New List(Of MyTestLittleClass)
End Class
Public Class MyTestLittleClass
Public Property SecondProperty As New List(Of Integer)
End Class
我創建一個新MyTestBigClass並將其綁定到一個PropertyGrid中。我轉到該表單,單擊FirstProperty行,這會彈出「集合編輯器」對話框。我多次點擊「添加」以在該集合中創建一些成員。然後關閉對話框。這到目前爲止工作得很好,並且我可以確認FirstProperty的預期更改實際發生。
然後我什麼也不做,除了再次單擊FirstProperty行。現在,代替Collection Editor回來顯示我剛添加到該集合中的成員,我得到一個NullReferenceException。
這是奇怪的部分。
如果我改變了倒數第二行,而不是說這種情況不會發生異常:
Public Property SecondProperty As List(Of Integer)
那獲取該控件擺脫NullReferenceException異常,並讓我用綁定的PropertyGrid就好了。但是這是以代碼中其他地方的問題爲代價的,因爲SecondProperty現在大部分時間都是null(在VB中沒有)。
更糟糕的是,如果我初始化SecondProperty 任意位置,那麼相同的異常會回來。即使我創建了一個構造函數(一個VB New sub)並在其中創建了該對象,但以某種方式讓該成員爲非null仍然會導致屬性網格自身崩潰。
這是怎麼回事?這是控制代碼中的錯誤,還是我使用錯了?什麼是解決它的正確方法?