web-dev-qa-db-fra.com

WPF DatePicker pour afficher l'heure ainsi que la date

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.

12
user3428422

Utilisez l'extension DateTimePicker

8
zaman

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

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.

0
Lyra