2009-04-25 13 views
35

In WPF, esiste un modo per avere la proprietà Text di un TextBlock per contenere sia il testo codificato che un'associazione specifica?Avere testo hardcoded con un'associazione in un TextBlock

Quello che ho in mente è qualcosa sulla falsariga di quanto segue (naturalmente, il seguito non si compila):

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

risposta

65

V'è, se siete su .Net 3.5 SP1

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

È possibile utilizzare più uscite, simile a args [] nella stringa.Formato ([1], [2], [3], ... [n])? –

+1

manca l'escape \ {0 \} –

3

Uso Binding.StringFormat:

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

hi Danko - sapresti come farlo funzionare con la sintassi degli elementi di proprietà? – BKSpurgeon

24

Nell'utilizzo l'approccio di cui sopra:

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

ho trovato un po 'restrittiva che non riuscivo a trovare un modo per grassetto all'interno del StringFormat né poteva utilizzare un apostrofo nel StringFormat.

Invece sono andato con questo approccio, che ha funzionato meglio per me:

<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

Qui il valore vincolante (clouds.all) viene aggiunto con "%". Puoi aggiungere qualsiasi valore desiderato dopo "\ {0 \}".

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

Potresti per favore [modificare] in una spiegazione del perché questo codice risponde alla domanda? Le risposte al solo codice sono [scoraggiate] (http://meta.stackexchange.com/q/148272/274165), perché non insegnano la soluzione. –

+0

@Nathan modifica la mia risposta. È utile ora? Grazie per il tuo consiglio. –

Problemi correlati