当存在嵌套集合属性时,我在XCeed WPF属性网格控件中获得异常。行为定义明确,可重现,但非常奇怪。
以下是一个示例类结构:
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行,这将弹出Collection Editor对话框。我点击了#34;添加"几次在集合中创建一些成员。然后我关闭对话框。到目前为止,这种方法运行良好,我可以确认FirstProperty的预期更改实际发生。
然后我什么都不做,除了再次单击FirstProperty行。现在,而不是收集编辑器回来向我展示我刚刚添加到该集合的成员,我得到一个NullReferenceException。
这是奇怪的部分。
如果我改变倒数第二行代替这一点,则不会发生异常:
Public Property SecondProperty As List(Of Integer)
这摆脱了这个控件中的NullReferenceException,让我使用绑定的PropertyGrid就好了。但是这会以代码中其他地方的问题为代价,因为SecondProperty现在大部分时间都是null(在VB中也称为Nothing)。
更糟糕的是,如果我在任何地方初始化SecondProperty ,同样的异常会回来。即使我创建了一个构造函数(一个VB New sub)并在那里创建了对象,但是以某种方式使该成员为非null仍会使属性网格本身崩溃。
发生了什么事?这是控制代码中的错误还是我使用它错了?什么是解决问题的正确方法?
答案 0 :(得分:0)
发现这个bug存在于Xceed PropertyGrid控件中。已修复截至2017年6月5日发布的付费版本。版本3.4.17280.14430的发行说明部分说明:
在PropertyGrid中,当Collection的项目包含List属性时,打开CollectionControl编辑器将不再崩溃。