2009-06-18 9 views
5

Posso ottenere MultiBinding lavorare con StringFormat:Qual è la sintassi corretta per l'utilizzo di StringFormat con associazione singola?

<TextBlock.Text> 
    <MultiBinding StringFormat="{}{0} {1} (hired on {2:MMM dd, yyyy})"> 
     <Binding Path="FirstName"/> 
     <Binding Path="LastName"/> 
     <Binding Path="HireDate"/> 
    </MultiBinding> 
</TextBlock.Text> 

Ma qual è la sintassi corretta per singola vincolante? La seguente non funziona (anche se sembra essere la stessa sintassi this example):

<TextBlock Text="{Binding Path=HiredDate, StringFormat='{MMM dd, yyyy}'}"/> 

RISPOSTA:

Grazie Matt, quello che mi serviva era una combinazione di due vostre risposte, questa grande opera :

<TextBlock Text="{Binding Path=HiredDate, 
    StringFormat='Hired on {0:MMM dd, yyyy}'}"/> 

risposta

10

volete lasciare le parentesi graffe fuori dalla stringa di formato nel tuo esempio, perché non si sta utilizzando come segnaposto (come usereste "{0}" in String.Format ()).

Quindi:

<TextBlock Text="{Binding Path=HiredDate, StringFormat='MMM dd, yyyy'}"/> 

Se si desidera fare riferimento al valore segnaposto da qualche parte all'interno della stringa, si può fare in modo da sfuggire le parentesi graffe con un backslash:

<TextBlock Text="{Binding Path=HiredDate, StringFormat='Hired on \{0\}'}"/> 
+1

non pensi hai bisogno dei backslash sul tuo secondo esempio, funziona senza di loro, o sono lì per qualche altro motivo. –

+0

Strano. Ho avuto errori di compilazione in passato quando ho omesso i backslash. Felice che funzioni per te! –

+0

Ho scoperto che se la stringa inizia con la parentesi come '{0} Some Text' allora è necessario sfuggire alle parentesi. Se prima viene fuori qualsiasi altro personaggio (come uno spazio), non è necessario sfuggire a loro. – Tod

Problemi correlati