2016-11-03 2 views
0

Ich habe eine Frage zu WPF stringformat.WPF - StringFormat mit gewichtetem Text

Ich möchte eine Zeichenfolge in eine TextBlock mit einem stringformat binden, zur Zeit ich etwas Ähnliches wie die folgenden haben:

<TextBlock> 
    <TextBlock.Text> 
     <Binding StringFormat="{}Text: {0}" Path="text"/> 
    </TextBlock.Text> 
</TextBlock> 

Was ich tun möchte, ist Format der Zeichenfolge wie folgt aussehen: Text : Text

Oder in anderen Worten, ich möchte Bold den ersten Teil der resultierenden Zeichenfolge. In meiner Recherche zur Lösung des Problems fand ich eine ähnliche Frage, StringFormat with Font Weight. Ich bin jedoch nicht glücklich mit diesem Ansatz, und die meisten Vorschläge wiederholen diese Lösung für mein Problem.

Ich würde gerne wissen, ob dies der einzige Weg ist, dies zu tun. Ich bin nicht ganz glücklich mit dieser Lösung, da ich das Gefühl habe, dass es das XML aufbläht und es schwieriger zu lesen macht.

Ich bin neu bei WPF insgesamt, also wenn das der akzeptable Weg ist, werde ich das tun .... Ich möchte nur wissen, ob dies der beste Weg ist, dieses einfache Problem zu lösen.

Antwort

2

Ich habe nur ein Wort für Sie: Run.

<TextBlock> 
    <Run FontWeight="Bold" 
     Text="Text: " /> 
    <Run Text="{Binding text}" /> 
</TextBlock> 

ich die Frage ganz lesen sollte, bevor er antwortete; Dann solltest du nicht einfach eine andere Seite verlinken, ohne Details hinzuzufügen!

Von der Spitze meines Kopfes, gibt es nur 2 Lösungen, einige Markup-Formatierung zu haben, <Run> und <Span>.

<Span> hat einige nützliche Kürzeln für <Bold>, <Italic> und <Underline>, aber diese nicht unterstützen verbindlich.
<Run> ist ausführlich schwer, unterstützt aber die Bindung.

In Ihrem Fall die 'beste' Lösung wäre so etwas wie:

<TextBlock> 
    <Bold>Text: </Bold><Run Text="{Binding text}"/> 
</TextBlock> 

Für die Randbemerkung, Span wie Run ist, kann aber enthält andere Elemente (Run, Span, Text).

Für weitere Details, see also.

+0

Könnten Sie bitte erklären, warum dies der beste Weg ist/nur um das zu erreichen? Wie ich in meiner Anfangsfrage gesagt habe ... bin ich nicht glücklich mit dieser Lösung. Warum ist es das Beste? Gibt es andere Methoden? Wenn ja, welche Nachteile haben sie gegenüber der "Run" -Lösung? –

+0

Nun, wie ich es untersucht habe ... jede andere Lösung ist viel verwirrender und komplizierter ... Als solche ist dies die eleganteste Lösung und wird für diese Frage als solche gekennzeichnet. –

+0

@NealByington Bearbeitete die Antwort – Kilazur