WPF Binding StringFormat Short Date String

Me gustaría usar el formato de cadena con fecha corta en WPF.

Intenté algo como:

 

¿Como hacer esto?

Prueba esto:

  

que es sensible a la cultura y requiere .NET 3.5 SP1 o superior.

NOTA: Esto es sensible a 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 del formato de cadena en la página de MSDN en 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 muestra la fecha en formato de EE. UU. A menos que usted mismo establezca el valor de cultivo.

Si no establece esta propiedad, el motor de enlace utiliza la propiedad Idioma del objeto de destino vinculante. 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 explícitamente.

Fuente

Una forma de hacerlo es en el código subyacente (suponiendo que haya establecido la cultura del subproceso en el valor correcto):

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

La otra forma es establecer la cultura del convertidor en el enlace:

  

Aunque esto no te permite localizar la salida.

O use esto para un formato en inglés (o mezcle para personalizar):

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

Utilice la propiedad StringFormat (o ContentStringFormat en ContentControl y sus derivados, por ejemplo, Label ).

  

Tenga en cuenta que la {} anterior a la notación de argumento posicional estándar String.Format permite que las llaves se String.Format en el lenguaje de extensión de marcado.

Solo usa:

  

Si quieres agregar una cadena con el valor usa esto:

  

Algunas muestras de DateTime StringFormat que encontré útiles. Levantado de C # Ejemplos

 DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123); String.Format("{0:y yy yyy yyyy}", dt); // "8 08 008 2008" year String.Format("{0:M MM MMM MMMM}", dt); // "3 03 Mar March" month String.Format("{0:d dd ddd dddd}", dt); // "9 09 Sun Sunday" day String.Format("{0:h hh H HH}", dt); // "4 04 16 16" hour 12/24 String.Format("{0:m mm}", dt); // "5 05" minute String.Format("{0:s ss}", dt); // "7 07" second String.Format("{0:f ff fff ffff}", dt); // "1 12 123 1230" sec.fraction String.Format("{0:F FF FFF FFFF}", dt); // "1 12 123 123" without zeroes String.Format("{0:t tt}", dt); // "P PM" AM or PM String.Format("{0:z zz zzz}", dt); // "-6 -06 -06:00" time zone