2009-04-07 4 views
1

Ich habe ein benutzerdefiniertes Steuerelement, das Teil einer Liste ist. Der Text, der angezeigt werden soll, wird festgelegt, indem der Eigenschaft Text ein Wert zugewiesen wird. Zur Laufzeit wird dieser Text aus einer Datenbank geladen. Ich möchte diesen Text mit der Zeichenfolge "Toelichting:" (Niederländisch für "Erklärung") voranstellen. Ich kann dies erreichen, indem die Formatstring-Eigenschaft der Steuerung auf die folgende Einstellung:Können Sie Condition-Checking-Code in eine Formatzeichenfolge einschließen?

"Toelichting: {0}" 

Nun, wenn der Text, der geladen wird eine leere Zeichenfolge ist, ich will „Toelichting: –“ anzuzeigen, so mit einem en -dash am Ende. Ansonsten möchte ich "Toelichting: MyText" anzeigen. Ist es möglich, dem FormatString einen Condition-Checking-Code hinzuzufügen, damit ich prüfen kann, ob der Parameter nicht leer ist?

Antwort

1

Nein, es gibt keine Möglichkeit, das zu tun.

+0

Leider ist dies die prägnanteste und richtige Antwort auf meine Fragen. Die anderen Vorschläge wären nette Workarounds, aber leider sind sie für mich keine Option. – Daan

+0

Wenn Sie die Option zum Binden an einen anderen Typ als string hatten, können Sie die ToString() -Methode für diesen Typ überschreiben, um das zu tun, was Sie wollten. Wenn Sie Ihre Zeichenfolge in einen solchen Typ umbrechen können, würde das funktionieren. –

5

Warum nicht nur das?

string.Format("Toelichting: {0}", string.IsNullOrEmpty(explanation) ? "–" : explanation); 

Ich glaube nicht, dass es eine Möglichkeit, diese Zeichenfolge im Format einzubetten.

+0

Ich kann das nicht tun, weil ich keine Kontrolle über die tatsächliche Zuordnung des Textes zum Steuerelement habe, da es Teil eines komplexeren, zusammengesetzten Steuerelements ist. Deshalb habe ich versucht, diese Logik in den FormatString einzubetten. – Daan

+0

Ah. In diesem Fall müssen Sie beim Abrufen der Daten eine leere Zeichenfolge durch einen Strich ersetzen. Es tut uns leid. –

1

Sie können es wie folgt tun:

String.Format("Toelichting: {0}", 
    (String.IsNullOrEmpty(yourstr)) ? "-" : yourstr); 

Nicht perfekt, aber seine relativ kompakt und lesbar.

+0

Ich kann das nicht tun, weil ich keine Kontrolle über die tatsächliche Zuordnung des Textes zum Steuerelement habe, da es Teil eines komplexeren, zusammengesetzten Steuerelements ist. Deshalb habe ich versucht, diese Logik in den FormatString einzubetten. – Daan

1

Wenn Sie diese Art der Sache tun dann viel betrachten Sie Ihre eigenen Formatierer zu schreiben, so dass Sie Code wie diesen schreiben könnte ...

foo = string.Format (neu MyFormatter() „Toelichting: {0: Erklärung} ", bar);

MyFormatter würde IFormatProvider und ICustomFormatter implementieren.

Schauen Sie sich diese ...

.NET: Is there a String.Format form for inserting the value of an object property into a string?

... die wahrscheinlich komplizierter ist, als man braucht (wie es mit Reflexion beschäftigt und arbeitet mit jedem Objekt)

Verwandte Themen