96 votes

WPF Binding StringFormat Short Date String

Je voudrais utiliser le format de chaîne nommé Date courte dans WPF.

J'ai essayé quelque chose comme:

 <TextBlock Text="{Binding Date, StringFormat='Short Date'}" />
 

Comment faire ça?

191voto

ChrisF Points 74295

Essayez ceci:

<TextBlock Text="{Binding PropertyPath, StringFormat=d}" />

qui est de la culture sensible et nécessite .NET 3.5 SP1 ou supérieur.

REMARQUE: Il est sensible à la casse. "d" est le spécificateur de format de date courte , tandis que "D" est la longue date spécificateur de format.

Il y a une liste complète de chaîne de format sur la page MSDN sur la Norme de la Date et de l'Heure des Chaînes de Format et une explication complète de toutes les options sur ce blog MSDN

Cependant, il y a un piège avec cette - il toujours des sorties de la date au format AMÉRICAIN, sauf si vous définissez la culture à la valeur correcte vous-même.

Si vous ne définissez pas cette propriété, le moteur de liaison utilise le Langage de la propriété de la liaison de l'objet cible. En XAML par défaut, c'est "en-US" ou hérite de la valeur de l'élément racine (ou de n'importe quel élément de la page, si l'on a été défini explicitement.

Source

Une façon de le faire c'est dans le code-behind (en supposant que vous avez la culture de l'thread à la valeur correcte):

this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);

L'autre façon est de mettre le convertisseur de la culture dans la liaison:

<TextBlock Text="{Binding PropertyPath, StringFormat=d, ConverterCulture=en-GB}" />

Bien que cela ne vous permet pas de localiser la sortie.

59voto

else Points 81

Ou utilisez ceci pour un format anglais (ou mélangez-le pour un format personnalisé):

 StringFormat='{}{0:dd/MM/yyyy}'
 

31voto

user7116 Points 39829

Utilisez la propriété StringFormat (ou ContentStringFormat sur ContentControl et ses dérivés, par exemple Label ).

 <TextBlock Text="{Binding Date, StringFormat={}{0:d}}" />
 

Notez que {} avant la notation d'argument de position standard String.Format permet aux accolades d'être échappées dans le langage d'extension du balisage.

6voto

as-cii Points 7028

Il suffit d'utiliser:

 <TextBlock Text="{Binding Date, StringFormat=\{0:d\}}" />
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X