【问题标题】:Displaying a formatted 'DateTime' in a WPF 'TextBlock'在 WPF 'TextBlock' 中显示格式化的 'DateTime'
【发布时间】:2014-04-30 02:24:07
【问题描述】:

在我的 WPF 应用程序中,我有一个静态的 List<Guest>Guest 具有 NameLastnameBirthday 等属性。

我的问题涉及Birthday。我想在TextBlock 中显示Birthday,它是DateTime 类型。我想要的输出格式类似于DD/MM/YYYY。我想过使用这样的解析方法:

DateTime.ParseExact(s, "yyyyMMdd").ToLocalTime()

有没有更好的方法来避免这种解析?例如,C# 是否有 DateTime 的转换器?请注意,我只需要为输出进行此转换。

【问题讨论】:

  • 我不明白。您想在不使用 Parse 的情况下将字符串转换为 DateTime 吗?您想编写自己的解析吗?有一个用于日期时间的 Convert.To,但在内部调用 Parse。
  • 你说TextBlock,所以你用的是WPF还是Silverlight?
  • 我在我的项目中使用 WPF
  • 我不想像在 Java 中那样解析(例如 String.parseString)或强制转换 [()]。在学校练习中,我们使用了 IValueConverter,但我认为使用 Timedate 我无法使用它。

标签: c# wpf datetime converter


【解决方案1】:

痛苦的方法是手动格式化和解析。优雅的方法是将表单绑定到包含属性的对象。使用对象数据绑定时,您可以指定格式。两种方式的转换都是自动进行的。

除了与字符串进行自动转换的优势之外,您还可以将业务逻辑与表单分离。例如,您可以将任何逻辑应用于名为guest.DateOfBirth 的属性(或者如果逻辑在Guest 类中,则只需DateOfBirth),而不是将其应用于DateTime.Parse(textBox13.Text) 之类的构造,这使得它很多更易于理解和维护代码。

见:

Data Binding for Windows Forms(在 developerfusion 上)

Data binding concepts in .NET windows forms(在 CodeProject 上)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 2011-03-28
    相关资源
    最近更新 更多