2009-01-25 20 views
18

Esto funciona muy bien:¿Cómo cambiar el formato de fecha en el control Silverlight DatePicker?

<my:DatePicker IsTodayHighlighted="True" Width="200"> 
</my:DatePicker> 

Pero yo quiero dar formato a la fecha, algo como esto:

<my:DatePicker IsTodayHighlighted="True" Width="200" Format="yyyy-mm-dd"> 
</my:DatePicker> 

Alguien sabe la sintaxis para esto?

+0

¿Necesita un formato de fecha diferente para el selector de fecha solamente, o también sería útil establecer un formato de fecha específico para toda la aplicación? – ISW

+0

Solo para el selector de fecha, por ejemplo. –

Respuesta

28

Desafortunadamente, el control DatePicker actualmente no admite formatos gratuitos de DateTime.

Si esto es algo que le interesa ver ayuda en la versión futura de DatePicker, cree una solicitud de función codeplex que lo sugiera. http://silverlight.codeplex.com/WorkItem/Create.aspx

Sólo para señalar que los controles TimeUpDown nuevo kit de herramientas de Silverlight de marzo de 2009 TimePicker & soportan una amplia gama de opciones de globalización. Uno de ellos incluye formatos gratuitos de DateTime. Entonces, es solo cuestión de interés público si transferimos esa capacidad a DatePicker o no. Tenga una mirada en el formato para TimePicker @ http://silverlight.codeplex.com/Wiki/View.aspx?title=Silverlight%20Toolkit%20Overview%20Part%201#TimePicker

Mientras tanto, la mejor solución es o bien cambiar la cultura local o el formato de la cultura local.

public App() 
    { 
     Thread.CurrentThread.CurrentCulture = new CultureInfo("nl-NL"); 

o cambie el formato en la cultura local.

 public App() 
    { 
     Thread.CurrentThread.CurrentCulture = (CultureInfo) Thread.CurrentThread.CurrentCulture.Clone(); 
     Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern = "D/m/yyyy"; 
+0

Establecer la cultura actual funciona muy bien, y solo tiene que hacerlo una vez a lo largo de su aplicación. – Calanus

0

El Silverlight DatePicker tiene una propiedad SelectedDateFormat en él, esto puede ser lo que está buscando.

1

Debe definir una plantilla de control personalizada y editar el cuadro de texto del control datepicker para formatear el texto.

0

Puede ocultar el cuadro de texto de controles (con un ancho menor), exponer su propiedad (opcionalmente establece IsEnabled en falso) y usar un enlace de elementos y un convertidor. Si está utilizando MVVM, configure el DataContext en su ViewModel. Supongo que otra opción sería sobrescribir DataTemplate para no incluir el cuadro de texto y hacer la misma idea.

<StackPanel Orientation="Horizontal" Height="22"> 
     <TextBox x:Name="textBox2" Width="106" Text="{Binding ElementName=datePicker2, Path=SelectedDate, Mode=TwoWay, Converter={StaticResource internationalDateTimeFormatConverter}}" /> 
     <controls:DatePicker x:Name="datePicker2" IsTabStop="False" SelectedDate="{Binding TargetDatePicker, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" Width="23" HorizontalAlignment="Left" /> 
</StackPanel> 

ACTUALIZACIÓN: La unión de la caja de texto para el selector de la fecha TwoWay funciona bien, pero no actualiza el modelo de vista de la propiedad. Así que voy a configurar IsEnabled = False y llamarlo bueno.

0

Veo que esta es una pregunta respondida.

Pero me gustaría notificar acerca de this link a un juego de herramientas de control Silverlight 5 que he comenzado a crear recientemente. Contiene (entre otros controles) un control DateTimeBox en el que puede manejar tanto la fecha como la hora dentro del mismo control. En este punto, todavía está en desarrollo, pero debería ser utilizable para la mayoría de los escenarios.

Cuestiones relacionadas