Me gustaría usar el formato de cadena con nombre Short Date en WPF.
Intenté algo como:
<TextBlock Text="{Binding Date, StringFormat='Short Date'}" />
¿Como hacer esto?
Prueba esto:
<TextBlock Text="{Binding PropertyPath, StringFormat=d}" />
que es sensible a la cultura y requiere .NET 3.5 SP1 o superior.
NOTA: Esto distingue entre mayúsculas y minúsculas. "d" es el especificador de formato de fecha corta, mientras que "D" es el especificador de formato de fecha larga .
Hay una lista completa de formato de cadena en la página de MSDN sobre cadenas de formato de fecha y hora estándar y una explicación más completa de todas las opciones en esta publicación de blog de MSDN
Sin embargo, hay un problema con esto: siempre genera la fecha en formato de EE. UU. A menos que usted mismo establezca la cultura en el valor correcto.
Si no establece esta propiedad, el motor de enlace usa la propiedad Language del objeto de destino de enlace. En XAML, este valor predeterminado es "en-US" o hereda el valor del elemento raíz (o cualquier elemento) de la página, si se ha establecido uno explícitamente.
Una forma de hacer esto es en el código subyacente (suponiendo que haya configurado la cultura del hilo en el valor correcto):
this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);
La otra forma es establecer la cultura del convertidor en el enlace:
<TextBlock Text="{Binding PropertyPath, StringFormat=d, ConverterCulture=en-GB}" />
Aunque esto no le permite localizar la salida.
O use esto para un formato en inglés (o mezcle para personalizar):
fuente
Utilice la
StringFormat
propiedad (oContentStringFormat
sobreContentControl
y sus derivados, por ejemploLabel
).<TextBlock Text="{Binding Date, StringFormat={}{0:d}}" />
Tenga en cuenta que
{}
antes de laString.Format
notación de argumentos posicionales estándar permite que las llaves se escapen en el lenguaje de extensión de marcado.fuente
{}
le permitirá usar loStringFormat='{}Created Date:{0:d}'
que de otra manera produciría resultados inesperados.Algunas muestras de DateTime StringFormat que encontré útiles. Extraído de ejemplos de C #
fuente
Si desea agregar una cadena con el valor, use esto:
<TextBlock Text="{Binding Date, StringFormat= 'Date : {0:d}'}" />
fuente
Tenga en cuenta las comillas simples para el formato de cadena. Esto no funciona:
mientras esto hace:
fuente
Solo usa:
<TextBlock Text="{Binding Date, StringFormat=\{0:d\}}" />
fuente