2017-07-07 150 views
2

當嵌套集合屬性存在時,我在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仍然會導致屬性網格自身崩潰。

這是怎麼回事?這是控制代碼中的錯誤,還是我使用錯了?什麼是解決它的正確方法?

回答

0

發現這個bug位於Xceed PropertyGrid控件中。修正於2017年6月5日發佈的付費版本。版本3.4.17280.14430的發行說明部分說明如下:

在PropertyGrid中,當Collection的項目包含List屬性時,打開CollectionControl編輯器將不會再發生崩潰。

相關問題