2010-07-27 6 views
2

Mon étiquette affiche '7/27/2010' au lieu de '27 juillet 2010'. Quelqu'un peut-il me dire pourquoi mon code de balisage est apparemment ignoré?xaml date format chaîne ignorée

RibbonLabel Content="{Binding Source={x:Static sys:DateTime.Today}, StringFormat='{}{0:MMMM d, yyyy}'}" 

vôtre,
Berryl

Répondre

11

La propriété StringFormat est utilisé uniquement si la liaison est appliquée sur une propriété de type String. Puisque Content est de type object, il n'est pas utilisé. Au lieu de mettre le contenu à la date directement, fixé à un TextBlock, et définir la propriété Text du TextBlock en utilisant un StringFormat:

<RibbonLabel> 
    <TextBlock Text="{Binding Source={x:Static sys:DateTime.Today}, 
     StringFormat='{}{0:MMMM d, yyyy}'}"/> 
</RibbonLabel> 

Vous pouvez également définir un DataTemplate pour DateTime puis vient de mettre le contenu à aujourd'hui:

<Window.Resources> 
    <DataTemplate DataType="{x:Type sys:DateTime}"> 
     <TextBlock Text="{Binding StringFormat='{}{0:MMMM d, yyyy}'}"/> 
    </DataTemplate> 
</Window.Resources> 
... 
<RibbonLabel Content="{Binding Source={x:Static sys:DateTime.Today}}"> 

EDIT: Une solution encore plus simple est d'utiliser la propriété ContentStringFormat

<RibbonLabel Content="{Binding Source={x:Static sys:DateTime.Today}}" 
    ContentStringFormat="{}{0:MMMM d, yyyy}" /> 
+2

Vous êtes un sauveur de vie. Merci beaucoup** – Sayka