Ich möchte vermeiden, ein EditorAttribute für jede Instanz eines bestimmten Typs zu platzieren, für den ich einen benutzerdefinierten UITypeEditor geschrieben habe.
Ich kann kein EditorAttribute für den Typ platzieren, da ich die Quelle nicht ändern kann.
Ich habe einen Verweis auf die einzige PropertyGrid-Instanz, die verwendet wird.
Kann ich einer PropertyGrid-Instanz (oder allen Instanzen) mitteilen, einen benutzerdefinierten UITypeEditor zu verwenden, wenn ein bestimmter Typ gefunden wird?
Hier ist ein MSDN-Artikel, der einen Einstieg in die Vorgehensweise bietet. NET 2.0 oder höher.
Sie können Editoren usw. zur Laufzeit normalerweise über TypeDescriptor.AddAttributes
zuordnen. Zum Beispiel (die Eigenschaft Bar
sollte mit einem "..." angezeigt werden, das "Bearbeiten!" Anzeigt):
Die Lösung von Marc wendet das EditorAttribute ohne Umschweife global auf den Typ "Balken" an. Wenn Sie eine delikate Disposition haben, können Sie Eigenschaften bestimmter Instanzen annotieren. Leider ist das mit TypeDescriptor.AddAttributes
Meine Lösung bestand darin, einen Wrapper ViewModel<T>
zu schreiben, der Eigenschaften von T kopiert und einige mit zusätzlichen Attributen annotiert. Angenommen, wir hätten eine Variable datum
vom Typ Bericht, würden wir sie so verwenden
Wo ViewModel<T>
definiert ist:
Wie oben definiert, ersetzt dies die Eigenschaften eines bestimmten Typs, aber Sie können Eigenschaften nach Namen ersetzen, wenn Sie eine höhere Auflösung benötigen.
Fügen Sie einfach ein Editor-Attribut zu Ihrer Klasse hinzu.
Tags und Links .net c# propertygrid uitypeeditor