2009-04-25 9 views
35

In WPF, gibt es eine Möglichkeit, die -Eigenschaft von TextBlock enthalten sowohl hart codierten Text und eine bestimmte Bindung enthalten?Fest codierten Text mit einer Bindung in einem TextBlock

Was ich im Sinn haben, ist etwas entlang der Linien der folgenden (ofcourse, wird die unten nicht kompiliert):

<TextBlock Text="Number of Fans: {Binding Artist.Fans.Count}"></TextBlock> 

Antwort

65

Es ist, wenn Sie auf .NET 3.5 SP1

sind
<TextBlock Text="{Binding Path=Artist.Fans.Count, 
       StringFormat='Number of Fans: {0}'}" /> 
+1

Ist es möglich, mehrere Ausgänge zu verwenden, ähnlich wie args [] im String.Format ([1], [2], [3], ... [n])? –

+1

es fehlt Escaping \ {0 \} –

3

Verwendung Binding.StringFormat:

<TextBlock Text="{Binding Artist.Fans.Count, StringFormat='Number of Fans: {0}'}"/> 
+0

hallo Danko - wüsstest du, wie man es mit der Syntax von Eigenschaftenelementen macht? – BKSpurgeon

24

Bei der Verwendung der obige Ansatz:

<TextBlock Text="{Binding Path="Artist.Fans.Count", 
        StringFormat='Number of Fans: {0}'}" /> 

Ich fand es, dass etwas restriktiv ich nicht einen Weg zu fett in dem String finden konnte, noch kann ich einen Apostroph im Stringformat verwenden.

Stattdessen ging ich mit diesem Ansatz, der besser für mich gearbeitet:

<TextBlock TextWrapping="Wrap"> 
    <Run>The value</Run> 
    <Run Text="{Binding Path=MyProperty1, Mode=OneWay}" FontWeight="Bold" /> 
    <Run>was invalid. Please enter it with the format... </Run> 
    <LineBreak/><LineBreak/> 
    <Run>Here is another value in the program</Run> 
    <Run Text="{Binding Path=MyProperty2, Mode=OneWay}" FontWeight="Bold" /> 
</TextBlock>      
1

Hier ist der Bindungswert (clouds.all) mit „%“ hinzugefügt. Sie können einen beliebigen Wert nach "\ {0 \}" hinzufügen.

<TextBlock Text="{Binding Path=clouds.all, StringFormat=\{0\}%}"/> 
+0

Könnten Sie bitte [bearbeiten] in einer Erklärung, warum dieser Code die Frage beantwortet? Code-only-Antworten werden [entmutigt] (http://meta.stackexchange.com/q/148272/274165), weil sie die Lösung nicht lehren. –

+0

@Nathan Ich bearbeite meine Antwort. Ist es jetzt hilfreich? Danke für deinen Rat. –