2009-01-25 8 views
18

Cela fonctionne très bien:Comment changer le format de la date dans le contrôle Silverlight DatePicker?

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

Mais je veux formater la date, quelque chose comme ceci:

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

Quelqu'un sait la syntaxe pour cela?

+0

Avez-vous besoin d'un format de date différent pour le sélecteur de date uniquement, ou serait-il travailler aussi pour définir un format de date spécifique pour votre application entière? – ISW

+0

Juste pour le sélecteur de date par exemple. –

Répondre

28

Malheureusement, le contrôle DatePicker ne prend pas en charge les formats DateHeure gratuits.

Si cela est quelque chose que vous êtes intéressé à voir le soutien dans la version future de DatePicker, s'il vous plaît créer une demande de fonctionnalité CodePlex qui suggère que. http://silverlight.codeplex.com/WorkItem/Create.aspx

Juste pour souligner que la nouvelle boîte à outils Silverlight Mars 2009 TimePicker & contrôles TimeUpDown ne prennent en charge une gamme complète d'options de mondialisation. L'un d'entre eux incluent des formats DateTime gratuits. C'est donc une question d'intérêt public que de reporter cette capacité à DatePicker. Jetez un oeil au format TimePicker @ http://silverlight.codeplex.com/Wiki/View.aspx?title=Silverlight%20Toolkit%20Overview%20Part%201#TimePicker

En attendant, la meilleure solution est soit de changer la culture locale ou le format sur la culture locale.

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

ou de changer le format sur la culture locale.

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

Définir la culture actuelle fonctionne très bien - et vous n'avez à le faire qu'une seule fois tout au long de votre application. – Calanus

0

Le Silverlight DatePicker a une SelectedDateFormat propriété sur elle, cela peut être ce que vous recherchez.

1

Vous devez définir un modèle de contrôle personnalisé et modifiez la zone de texte du contrôle DatePicker pour formater le texte.

0

Vous pouvez simplement cacher la zone de texte de contrôle (avec une largeur inférieure), vous êtes propre exposes (en option régler la IsEnabled false) et utiliser un élément de liaison et le convertisseur. Si vous utilisez MVVM, définissez le DataContext sur votre ViewModel. Je suppose qu'une autre option serait d'écraser le DataTemplate pour ne pas inclure la zone de texte et faire la même chose.

<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> 

MISE À JOUR: La TwoWay de liaison de la zone de texte à le sélecteur de date fonctionne bien, mais il ne met pas à jour la propriété ViewModel. Donc, je vais définir le IsEnabled = False et l'appeler bien.

0

Je remarque que c'est une question à réponse.

Mais je voudrais informer au sujet this link à une boîte à outils de contrôle Silverlight 5 J'ai récemment commencé à créer. Il contient (entre autres contrôles) un contrôle DateTimeBox dans lequel vous pouvez gérer à la fois la date et l'heure dans le même contrôle. À ce stade, il est encore en développement, mais il devrait être utilisable pour la plupart des scénarios.

Questions connexes