WPF日期选择器如何显示时间?

19

我在一个DataGrid中有一个DatePicker对象,它成功地显示了来自数据库或属性的日期:

<DataGridTemplateColumn.CellTemplate>
   <DataTemplate>
      <DatePicker SelectedDate="{Binding Date, StringFormat=dd/MM/yyyy}"/>
   </DataTemplate>   
</DataGridTemplateColumn.CellTemplate>

现在我想在日期之前显示时间。这是我的尝试,但它没有起作用:

<DataGridTemplateColumn.CellTemplate>
   <DataTemplate>
      <DatePicker SelectedDate="{Binding Date, StringFormat='dd/MM/yyyy HH:mm:ss'}"/>
   </DataTemplate>   
</DataGridTemplateColumn.CellTemplate>

注意: 我不想在代码后台执行此操作。

3个回答

13

所以根据您的回答,我猜这个问题不能通过使用.NET库来解决? - user3428422
4
DatePicker控件只能处理日期,无法处理时间,因此您需要使用不同的控件。 - Mashton

3

除此之外,如果你只是想以特定的格式显示日期,并且不使用其他组件,你可以这样做:

    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock  Text="{Binding Path=Date,StringFormat={}{0:dd/MM/yyyy}}"  VerticalAlignment="Center" HorizontalAlignment="Left">
            </TextBlock>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>

2
你可以像这样做:

你可以使用以下方法:

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

这将会在一个绑定到同一属性的文本框旁边显示一个日期选择器。文本框采用了字符串格式化,只显示日期。

UpdateSourceTrigger被设置为PropertyChanged,所以用户不会发生冲突。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接