Je voudrais utiliser le format de chaîne nommé Short Date dans WPF.
J'ai essayé quelque chose comme:
<TextBlock Text="{Binding Date, StringFormat='Short Date'}" />
Comment faire cela?
Essaye ça:
<TextBlock Text="{Binding PropertyPath, StringFormat=d}" />
qui est sensible à la culture et nécessite .NET 3.5 SP1 ou supérieur.
REMARQUE: cela est sensible à la casse. "d" est le spécificateur de format de date courte tandis que "D" est le spécificateur de format de date longue .
Il existe une liste complète des formats de chaîne sur la page MSDN sur les chaînes de format de date et d'heure standard et une explication plus complète de toutes les options de ce billet de blog MSDN
Cependant, il y a un problème avec cela: il affiche toujours la date au format américain, sauf si vous définissez vous-même la culture sur la valeur correcte.
Si vous ne définissez pas cette propriété, le moteur de liaison utilise la propriété Language de l'objet cible de liaison. En XAML, la valeur par défaut est "en-US" ou hérite de la valeur de l'élément racine (ou de tout élément) de la page, si l'un a été défini explicitement.
Une façon de le faire est dans le code derrière (en supposant que vous avez défini la culture du thread sur la valeur correcte):
this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);
L'autre méthode consiste à définir la culture du convertisseur dans la liaison:
<TextBlock Text="{Binding PropertyPath, StringFormat=d, ConverterCulture=en-GB}" />
Bien que cela ne vous permette pas de localiser la sortie.
Ou utilisez ceci pour un format anglais (ou mélangez-le pour un format personnalisé):
la source
Utilisez la
StringFormat
propriété (ouContentStringFormat
surContentControl
et ses dérivés, par exempleLabel
).<TextBlock Text="{Binding Date, StringFormat={}{0:d}}" />
Notez que la notation
{}
antérieure à l'String.Format
argument positionnel standard permet aux accolades d'être échappées dans le langage d'extension de balisage.la source
{}
vous permettra d'utiliserStringFormat='{}Created Date:{0:d}'
ce qui autrement produirait des résultats inattendus.Quelques exemples de DateTime StringFormat que j'ai trouvés utiles. Tiré des exemples C #
la source
Si vous voulez ajouter une chaîne avec la valeur, utilisez ceci:
<TextBlock Text="{Binding Date, StringFormat= 'Date : {0:d}'}" />
la source
Tenez compte des guillemets simples pour le format de chaîne. Cela ne fonctionne pas:
alors que cela fait:
la source
Utilisez simplement:
<TextBlock Text="{Binding Date, StringFormat=\{0:d\}}" />
la source