2017-07-07 153 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编辑器将不会再发生崩溃。

相关问题