Wie wird ein dynamisches Objekt im Eigenschaftenraster angezeigt?
Ich habe einen benutzerdefinierten Objekttyp, der in @ bearbeitet werden musPropertyGrid
:
public class CustomObjectType
{
public string Name { get; set; }
public List<CustomProperty> Properties {get; set;}
}
Welche hat eine Liste von benutzerdefinierten Eigenschaften:
public class CustomProperty
{
public string Name { get; set; }
public string Desc { get; set; }
public Object DefaultValue { get; set; }
Type type;
public Type Type
{
get
{
return type;
}
set
{
type = value;
DefaultValue = Activator.CreateInstance(value);
}
}
}
Das Hauptproblem hier ist, dass diePropertyGrid
control erlaubt keine Bearbeitung und verwendet auch keine geeigneten Bearbeitungstools für propertyDefaultValue
, das zuvor durch Setzen des Werts von @ instanziiert wiCustomProperty
's FeldType
.
Eine Art vonDefaultValue
ist nur zur Laufzeit bekannt.
Darüber hinaus muss ich eine benutzerdefinierteTypeConverter
zumCustomProperty
's EigentumType
, um eine Dropdown-Liste der unterstützten Typen anzuzeigen (z. B.Int
, String
, Color
, MyOwnClass
).
Wie würde ich das machen?