J'ai un objet DatePicker
dans une DataGrid
qui affiche correctement la date de la base de données ou une propriété:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding Date, StringFormat=dd/MM/yyyy}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
Maintenant, je veux montrer l'heure devant la date. C'est ce que j'ai essayé mais ça ne marche pas:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding Date, StringFormat='dd/MM/yyyy HH:mm:ss'}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
NOTE: Je pas veux faire ceci dans le code-behind.
Utilisez l'extension DateTimePicker
En plus de, sans utiliser d’autres composants, si vous voulez seulement afficher une date dans le format que vous souhaitez modifier, vous pouvez faire ceci:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Date,StringFormat={}{0:dd/MM/yyyy}}" VerticalAlignment="Center" HorizontalAlignment="Left">
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
Vous pouvez faire quelque chose comme ça:
<DataGridTemplateColumn Header="YourDate">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<DatePicker SelectedDate="{Binding YourDate, UpdateSourceTrigger=PropertyChanged}" />
<TextBox Margin="2 0 0 0" Text="{Binding YourDate, UpdateSourceTrigger=PropertyChanged, StringFormat='t'}" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding YourDate}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Cela affichera un DatePicker à côté d'une zone de texte liée à la même propriété. La TextBox a obtenu un StringFormat pour afficher uniquement la date.
UpdateSourceTrigger est défini sur PropertyChanged afin que l'utilisateur ne puisse pas créer de conflit.