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 显示时间和日期的主要内容,如果未能解决你的问题,请参考以下文章