2009-08-12 6 views
4

Dies sollte eine einfache Lösung haben, aber ich kann nicht scheinen, es zu finden.wpf string Formatierung NICHT Nummern oder Daten

Ich möchte etwas wie das folgende tun, wo ich eine Datenbindung mit einem String-Format habe. Das Feld ist ein Textfeld, und ich möchte es mit einem Suffix anzeigen (aber die zugrunde liegenden Daten nicht ändern).

<Label Name="field" Content="{Binding obj.field, StringFormat=\{0\} suffix}" /> 

Deshalb möchte ich obj.field Wert, zum Beispiel „Wert“, als „Wert Suffix“ anzuzeigen.

Ist es wirklich notwendig, einen ValueConverter (oder was auch immer) zu verwenden? Ich denke, wenn es mit der StringFormat-Konstruktion möglich ist, dann gibt es eine magische Formatoption, die ich gerade nicht kennengelernt habe.

Dies führt zu einer verwandten Frage: Wo kann ich eine Referenz für WPF StringFormat finden? Ich kann die Referenz für die C# String.Format Formatierungsoptionen finden, aber diese scheinen nicht alle in WPF zu funktionieren (wie ich es oben versucht habe).

+0

keine Antworten für die damit verbundene Frage? – Klay

+0

Ich habe versehentlich meinen Kommentar zu der verwandten Frage entfernt, als ich meine Antwort neu schrieb. Ich habe gerade aktualisiert. –

Antwort

7

StringFormat funktioniert, wenn der Zieltyp string ist. Der Typ der LabelContent Eigenschaft ist jedoch Objekt. Deshalb hat die StringFormat keine Wirkung. Wenn Sie eine TextBlock in die Label (oder nur eine TextBlock) setzen und die TextblockText Eigenschaft binden, sollte es gut funktionieren.

<Label> 
    <TextBlock Text="{Binding obj.field, StringFormat=\{0\} suffix}" /> 
</Label> 

Wenn Sie andere Gründe haben zu wollen, um den Wert der Label zu binden, können Sie auch die folgende tun.

<Label DataContext="{Binding obj.field}"> 
    <TextBlock Text="{Binding ., StringFormat=\{0\} suffix}" /> 
</Label> 

Verwandte Frage: Ich kann nicht aus irgendeinem Grund denken, warum normale Formatstrings, die Sie string.Format() liefern kann nicht funktionieren würde. Sie alle sollten, sowohl die Standard- als auch die benutzerdefinierte Zeichenfolge. Here ist eine Seite mit mehreren Beispielen. Wenn Sie irgendwelche finden, die nicht funktionieren, geben Sie bitte Beispiele an.

+1

Danke. Ich bin mir bewusst geworden, dass Etiketten nicht "lite" TextBlocks sind, wie ich es mir vorgestellt habe, sondern ein anderes Tier. Danke für die Antwort. – Klay