如何更改 WPF 应用程序中 DateTimePicker 的格式(例如 dd/MMM/yyyy)
我想更改 WPF 应用程序中 DateTimePicker 中所选日期的格式
I want to Change the Format of date selected in DateTimePicker in WPF Application
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
我最近正在处理这个问题。 我找到了一种执行此自定义格式的简单方法,希望对您有所帮助。 您需要做的第一件事就是在 XAML 中将特定样式应用于当前的 DatePicker,就像这样:
正如您在这部分中注意到的,当时存在一个名为 DateTimeFormatter 的转换器,以绑定到“的 Text 属性” PART_文本框”。 该转换器接收包含您的自定义格式的转换器参数。 最后,我们为 DateTimeFormatter 转换器添加 C# 代码。
我希望这对你有帮助。 如有任何问题或改进建议,请告诉我。
I was handling with this issue rencetly. I found a simple way to perform this custom format and I hope that this help you. First thing that you need to do is apply a specific style to your current DatePicker just like this, in your XAML:
As you can notice at this part, exist a Converter called DateTimeFormatter at the time to make binding to the Text property of the "PART_TextBox". This converter receives the converterparameter that includes your custom format. Finally we add the code in C# for the DateTimeFormatter converter.
I hope this help to you. Please let me know for any issue or suggesting for improve.
将此样式添加到您的 xaml 或 App.xaml 文件中
Add this style to your xaml or App.xaml file
在 XAML 中:
或
In XAML:
or
感谢@Fernando García 提供的基础。
我为 DatePicker 编写了一个 DateFormat 附加属性,可让您提供用于显示和输入的格式字符串。
对于输入,它将尝试使用提供的格式进行解析,然后回退到尝试使用当前区域性的格式进行解析。
问题格式的用法示例:
DateFormat 附加属性是:
Thanks to @Fernando García for the basis of this.
I have written a DateFormat attached property for DatePicker that lets you provide a format string for display and input.
For input it will attempt to parse using the provided format, falling back to trying to parse it with the current culture's format.
Example usage with the question's format:
The DateFormat attached property is:
通常,日期时间格式存储在资源文件中,因为这有助于应用程序的国际化。
您可以从资源文件中选择格式并使用
ToString(DATE_FORMAT)
在您的情况下,您可能想使用
Typically the date time format is stored in a resource file, because this would help in internationalization of the app.
You can pick up the format from the resource file and use a
ToString(DATE_FORMAT)
In your case you might want to use
对我来说,改变环境来改变
DatePicker
格式(如Thread.CurrentCulture
)并不是一个好主意。当然,您可以创建从
DatePicker
派生的Control
并实现像Format
这样的依赖属性,但这会花费太多精力。我发现的简单而优雅的解决方案是将值绑定到
SelectedDate
本身,而是绑定到一些未使用的属性(我为此使用了ToolTip
属性),并在 SelectedDate 更改时更新此属性。单向绑定的 C# 实现如下所示:
XAML+C# 应如下所示:
XAML:
C#:
对于双向实现,处理
ToolTipChanged
事件的方式与更新SelectedDate
的方式相同>。As for me, changing environment to change
DatePicker
format (likeThread.CurrentCulture
) is not a good idea.Sure, you can create
Control
derived fromDatePicker
and implement dependency property likeFormat
, but this costs too much effort.Simple and elegant solution I found is binding value not to
SelectedDate
itself, but to some unused property (I usedToolTip
property for this) and update this property when SelectedDate is changed.C# implementation for one-way binding looks like this:
XAML+C# should look like this:
XAML:
C#:
For two-way implementation handle
ToolTipChanged
event the same way to updateSelectedDate
.尝试这个
Try This