2009-06-16 13 views
1

Ich versuche, mit TypeDescriptor.CreateProperty eine Eigenschaft zu einem Typ hinzuzufügen, um eine zusätzliche Eigenschaft in einem Eigenschaftenraster anzuzeigen, jedoch wird diese neue Eigenschaft nicht hinzugefügt und wenn ich TypeDescriptor aufruft .GetProperties für diesen Typ, um die Eigenschaften zu überprüfen, diese Eigenschaft existiert nicht.TypeDescriptor.CreateProperty fügt keine Eigenschaft hinzu

Gibt es da etwas, das ich vermisse oder übersehe? Dies ist ein grundlegendes und einfaches Szenario soweit ich mich erinnere.

Hier ist der Aufruf: TypeDescriptor.CreateProperty (typeof (MovieMenuItem), "ExternalMediaLocation", typeof (string), null);

+1

Wie schreibt man ein Beispiel für den Code, der nicht funktioniert? – LukeH

Antwort

3

CreateProperty gibt Ihnen nur eine Reflexion-basierte PropertyDescriptor für den Typ in Frage (es ist nicht AddProperty, zum Beispiel). Was ist das Szenario hier? Wenn Sie lediglich zusätzliche Daten in DataGridView anzeigen müssen, besteht die einfachste Option darin, dem Gitter eine zusätzliche ungebundene Spalte hinzuzufügen.

Sie können Typen zur Laufzeit verlängern, sondern auch für Listen haben Sie zwei Möglichkeiten:

  • ITypedList (wenn jede Instanz der Liste können verschiedene Spalten) - siehe this answer
  • TypeDescriptionProvider - erlaubt Sie fügen benutzerdefinierte Eigenschaften pro Typ hinzu (letztlich läuft das Schreiben auf eine PropertyDescriptor, genau wie im ersten Beispiel - aber verschiedene Haken)

Die vollständigen Regeln für das Abrufen von listenbasierten Metadaten lauten wie folgt: this answer

+0

Ich möchte es zu einem Objekt hinzufügen, das ich mit einem PropertyGrid-Steuerelement bearbeite – reshefm

+0

Lange seit dem letzten Mal, als ich "schwer" das Komponentenmodell verwendet habe ... ist der Typbeschreibungsprovider der fehlende Link. Vielen Dank! – reshefm