Victor Zakharov
Victor Zakharov

Reputation: 26414

Expand custom object in property grid without any modifications to the class?

By default, custom objects are grayed out, and not expandable:

enter image description here

I know it's possible to make them expandable using ExpandableObjectConverter, but that requires extending the original class.

What if I cannot modify the original class? Is there a generic approach of handling custom object expansion inside a property grid?

Upvotes: 2

Views: 1717

Answers (1)

Mark
Mark

Reputation: 8150

You can dynamically add the TypeConverterAttribute for the ExpandableObjectConverter at runtime, using something like the following (VB.NET).

Dim attr = New TypeConverterAttribute(GetType(ExpandableObjectConverter))
TypeDescriptor.AddAttributes(GetType(ExtensionDataObject), attr)

You would need to AddAttribute for each type you want to be expandable. If the types are all in a specific namespace, you could use reflection to find them:

Dim assm = Assembly.GetExecutingAssembly() ' or some other assembly
For Each t In assm.GetTypes().Where(Function(x) x.Namespace = "InterestingTypes")
    TypeDescriptor.AddAttributes(t, attr)
Next

(sorry for the broken syntax highlighting - I should have used C#!)

Upvotes: 2

Related Questions