【问题标题】:StringFormat of Datetime object in binding gives back 0 for hour and minute绑定中 Datetime 对象的 StringFormat 为小时和分钟返回 0
【发布时间】:2015-10-30 21:46:27
【问题描述】:

我用 Datetime.Now 创建了一个 Datetime 对象,并将它作为一个类的属性。

当我将它绑定到网格视图时:

<GridViewColumn Header="Date" Width="120" DisplayMemberBinding="{Binding transaction_date1, StringFormat=HH:mm}" />

结果始终是 00:00。

当我调试代码时,我看到 Datetime 对象的小时、分钟等属性包含非零值。 我认为在这种情况下,StringFormat 从 Datetime 对象中的 Date 对象中获取小时和分钟,该对象具有正确的日期,但始终将 12:00:00 AM 作为小时。

有什么方法可以跳过它并在我的窗口中显示正确的小时和分钟?

提前谢谢你!

【问题讨论】:

    标签: c# wpf datetime binding string-formatting


    【解决方案1】:

    改成这样:

    <GridViewColumn Header="Date" Width="120" DisplayMemberBinding="{Binding transaction_date1, StringFormat='{}{0:HH:mm}'}" />
    

    如果您想使用带有自定义格式的StringFormat,那么您必须使用此方法,在格式字符串中提供参数索引。相当于:

    string.Format("{0:HH:mm}", transaction_date1);
    

    {} 开头的两个大括号指示 XAML 解析器忽略在字符串中找到的更多大括号。因此,您可以在一个绑定声明中多次使用您的日期值:

    DisplayMemberBinding="{Binding transaction_date1, StringFormat=`{} Your date-time is {0:dd/mm/yy} at approx. {0:HH} hours and {0:mm} minutes`}"
    

    【讨论】:

    • 感谢您的澄清。我还发现时间值在到达绑定之前丢失了。但是你的回答帮助我解决了我会遇到的下一个问题:)
    猜你喜欢
    • 2019-03-08
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 2021-07-31
    相关资源
    最近更新 更多