【发布时间】:2018-02-16 09:19:10
【问题描述】:
我在那里编写了一个带有自定义对象的 PCL,然后我创建了一个 GUI 来处理来自 PCL 的对象...我尝试使用 PropertyGrid 来编辑属性...我已经按顺序阅读了为了让网格知道如何处理该对象,我需要指定 EditorAttribute 并提供一个 TypeConverter ......但我认为我不能在 PCL 中添加这 2 个......
有没有办法在 GUI 级别处理这个问题,比如告诉 PropertyGrid 在运行时使用特定类型的 Editor/TypeConverter?我浏览了网格的可用功能/属性列表,看起来不可能。
【问题讨论】:
-
查看
ICustomTypeDescriptor,这将让您在运行时动态提供类型信息。即属性及其属性。谷歌搜索“icustomtypedescriptor propertygrid c#”。 -
是的,但您不需要在对象类本身中添加
TypeConverter或实现ICustomTypeDescriptor吗?ICustomTypeDescriptor虽然不是 PCL。 -
在运行时注册一个自定义的
TypeDescriptionProvider是您正在寻找的。您可以自己创建TypeDescriptionProvider和TypeDescriptor,然后将提供程序注册到您的类,以便使用您创建的类型描述符类提供自定义类型描述。此外,作为更清洁和更简单的选项,您可以创建一个包含与原始类相同属性的元数据类,并使用一些属性装饰元数据类的属性。然后使用AssociatedMetadataTypeTypeDescriptionProvider使用元数据类为您的类提供类型描述。
标签: c# .net winforms portable-class-library propertygrid