devexpress如何在PropertyGridControl中直接编辑集合成员

在 devexpress PropertyGridControl中展开(expand)集合(collection)成员(item)

Posted by 王帅 on September 26, 2021

引言

PropertyGridControl默认使用PropertyGrid的集合编辑器,如果你要编辑集合中的项,必须点击按钮打开集合编辑器

如下图所示:

default collection editor

从图中不难发现,List是可以直接编辑Capacity属性的,那可以直接把Course对象变成List的成员脱离集合编辑器来编辑吗?

解决方案

答案当然是可以的,通过观察可以发现,PropertyGridControl可展开编辑的就是Object,所以只需把集合中的成员映射为List中的Object即可,PropertyGrid已经有相应的解决方案了。

使用中间类型CourseCollection然后实现ICustomTypeDescriptor接口和PropertyDescriptor即可完成此需求,完整代码在文末

expand collection as property

假如你想要自定义类型名称可继承ExpandableObjectConverter

custom property name

参考资料