WPF DatePicker 显示时间和日期

Posted

技术标签:

【中文标题】WPF DatePicker 显示时间和日期【英文标题】:WPF DatePicker to show the time as well as the date 【发布时间】:2014-11-04 00:36:14 【问题描述】:

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

注意:我确实想在代码隐藏中执行此操作。

【问题讨论】:

【参考方案1】:

使用扩展 DateTimePicker

【讨论】:

所以我猜你的回答不能使用 .NET 库来完成? DatePicker 控件不处理时间,只处理日期。所以你需要使用不同的控件。【参考方案2】:

除此之外,不使用其他组件,如果您只想以您想要编辑的格式显示日期,您可以这样做:

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

【讨论】:

【参考方案3】:

你可以这样做:

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

这将在绑定到相同属性的 TextBox 旁边显示一个 DatePicker。 TextBox 有一个 StringFormat 只显示日期。

UpdateSourceTrigger 设置为 PropertyChanged,因此用户无法进行冲突。

【讨论】:

以上是关于WPF DatePicker 显示时间和日期的主要内容,如果未能解决你的问题,请参考以下文章

WPF DatePicker 仅显示可用日期

wpf datepicker 显示截断月份

DatePicker 显示默认日期 1/1/0001 - C# WPF

WPF DatePicker 多个日期

WPF DatePicker,显示今天的日期并绑定到属性

WPF DatePicker默认显示当前日期,格式化为年月日(转)