2011-01-13 3 views
2

Ich bin mit einem Eigenschaftenraster unter anderem zu bearbeiten, eine Sammlung von Gegenständen: alt textÄndern Standardverhalten von Property und Typeconverter

Das Standardverhalten für eine Sammlung bietet eine Taste + jedes Mitglied der bearbeiten Array.

Ich benutze ein Formular aus um dieses Feld zu bearbeiten, die bis bereits verdrahtet ist, aber ich mag die Möglichkeit für den Benutzer entfernen, um das Array zu bearbeiten, indem Sie den ‚Expander‘ mit

So würde es so aussehen:

alt text

UPDATE1: gemacht productIds eine IList Eigenschaft anstelle von int [] Jetzt tut dies:

alt text

-----------------!

UPDATE2: gemacht productIds eine benutzerdefinierte Klasse, zB

MyWrappedCollection : IEnumerable<int> 

so sieht es nun so aus:

alt text

Sicher, es zeigt immer noch [+], aber es funktioniert nicht, um etwas zu erweitern (dh verschwindet, wenn Sie darauf klicken)

Antwort

3

Das Attribut, das ob steuert eine Eigenschaft erweiterbar ist oder nicht, ist es Typeconverter ist. Der ExpandableObjectConverter ist eine integrierte Klasse, die die Möglichkeit bietet, eine Eigenschaft zu erweitern und sich selbst anzusehen. Ich vermute standardmäßig, dass Arrays und Sammlungen diesen Konverter verwenden, um anzuzeigen, was in ihnen ist.

Sie können einen eigenen TypeConverter schreiben, der nicht von ExpandableObjectConverter erbt, und ihn als Attribut in Ihrer Eigenschaft festlegen, um das + zu entfernen.

+0

Prost. Mein Typkonverter hat ExpandableObjectConverter aus irgendeinem Grund erweitert, wenn er nur hätte: TypeConverter. – wal

0

Standardmäßig wird für eine Sammlung die Methode [...] verwendet. Vielleicht könnten Sie eine Sammlung (z. B. eine Liste) anstelle eines Arrays verwenden.

Übrigens, irgendeinen bestimmten Grund, warum Sie Arrays verwenden?

+0

Ich habe ProductIds eine IList anstelle von Int [] und Sie können es immer noch erweitern. siehe Screenshot zum Originalbeitrag. – wal

+0

Entschuldigung für die Kritik, aber Ihre Antwort bietet nicht wirklich viel Hilfe. JA, die [...] erscheinen aber nur, wenn man hineinklickt. – wal

0

Sie müssen einen UITypeEdtitor implementieren und anwenden. Siehe How to: Implement a UI Type Editor

Aufschalten GetEditStyle Ihrer UITypeEditor Modal zurückzukehren

+0

Ich habe bereits ein UITypeEditor-Attribut an diese Eigenschaft angehängt. Der Editor überschreibt GetEditStyle, um Modal zurückzugeben (wie ich es benutzte, um ein Formular zu öffnen), aber die Erweiterungssymbole erscheinen immer noch. – wal