PropertyGrid Problem mit komplexem Datentyp



  • Hallo,
    ich habe folgendes Problem:
    ich möchte in einem PropertyGrid Control einen komplexen Datentypen anzeigen (im allgemeinen ein einfacher Vektor).
    Dafür habe ich einen TypeConverter erstellt, welcher vom Type ExpandableObjectConverter abgeleitet ist.
    Dieser überschreibt dessen Methoden CanConvertTo(), ConvertTo(), CanConvertFrom() und ConvertFrom(). Soweit, so gut, die Methoden passen, es kompiliert alles. Jedoch bei der Anzeige / beim Editieren läuft etwas scheinbar falsch.
    Die Methoden CanConvertTo, ConvertTo und CanConvertFrom werden richtig aufgerufen, allerdings nicht die Methode ConvertFrom (die meines Erachtens aufgerufen werden müsste, wenn sich die Werte des untergeordneten Objektes verändern). Somit wird auch die Property nicht (richtig) gesetzt. Die Methode CanConvertFrom liefert bei der Anfrage auf String::typeid ein true zurück (da ich mal davon ausgehe, dass von Strings konvertiert werden muss). Stimmt das alles so weit, oder ist einfach die Methode falsch und ich muss auf einen anderen type das true zurückgeben?
    Hoffe, dass ihr mir helfen könnt.

    thx so far



  • Also der ExpandableObjectConverter erlaubt es ja deine properties wiederum expandiert anzuzeigen.

    + Klasse Circle
    -> Center
    -> Radius

    Jetzt ist Center ein Point2d(x und y), und hat ein ExpandablePointConverter Attribut.

    Folglich:

    + Klasse Circle
    -> + Object Center
    .....-> X
    .....-> Y
    -> Radius

    CanConvertFrom im Falle von Center bezieht sich nun darauf das es von einem String in ein neues Object der Klasse Point2d konvertiert werden kann.

    ConvertFrom wird dann aufgerufen wenn du in das "-> + Object Center"-Feld was reinschreibst.

    Also:

    + Klasse Circle
    -> + Object Center <---HIER!
    .....-> X
    .....-> Y
    -> Radius

    Das funktioniert natürlich auch für "normale" properties indem du einfach von TypeConverter ableitest und das dann der property zu-attributierst 🙂



  • hmm, sry, dass ich nimmer rein geschrieben hab, hatte es schon gelöst, wurde nur net aufgerufen, weil ich den string der property als nicht änderbar hatte...
    außerdem, was ich sehr hilfreich finde, ist in den kind-properties das flag

    [NotifyParentPropertyAttribute(true)]
    

    Damit kriegt man das Verhalten hin, was man sich eigentlich vom ExpandableObjectConverter (meines Erachtens nach) erwünscht.


Anmelden zum Antworten