【问题标题】:Do I always have to write a converter for date-formatting?我总是需要为日期格式编写转换器吗?
【发布时间】:2023-03-28 15:06:01
【问题描述】:

我经常在我的 wpf 项目中使用绑定到日期时间属性的文本框。我想将日期格式化为德语格式dd.MM.yyyy。 目前我用一个自写的转换器来做这个,我可以给出所需的日期格式。

例如这样:

<TextBox Name="Date" Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type prj:MyBar}}, Path=Date, Converter={StaticResource dateConverter}, ConverterParameter=dd.MM.yyyy}" />

转换器唯一要做的就是调用 DateTime 的ToString(string formatString)-方法。

是否有一种“更智能”的方式来格式化数据绑定的日期。最好的情况是不需要编写 C# 代码。也许在 microsoft-libs 中有任何现有的类,可以为数据绑定做这样的日期转换,但我还没有找到它。

如果有什么建议就好了,

问候, 马丁

【问题讨论】:

    标签: wpf data-binding xaml format converter


    【解决方案1】:

    .NET 3.5 SP1 有 StringFormatter。

    <TextBox Name="Date" Text="{Binding Date, StringFormat='{}{0:MM/dd/yyyy}'}"/>
    

    结果: 2010 年 2 月 2 日

    <TextBox Name="Date" Text="{Binding Date, StringFormat='{}{0:D}'}"/>
    

    结果:2010 年 2 月 2 日,星期二

    但结果也可能因系统默认日期时间格式而异。

    【讨论】:

    • 标准日期/时间格式已在所有 .Net 版本中,请参阅msdn.microsoft.com/en-us/library/az4se3k1(VS.71).aspx(1.1 版)
    • .NET 3.0 中是否有这种可能性,因为我还没有将我的项目迁移到 3.5。
    • 只需制作一个字符串格式转换器,并将格式化字符串作为转换器参数传递。然后,您只需为所有这些转换器制作一个转换器,并且当/如果您确实迁移到 3.5sp1 时,更新很容易。
    • 如果您被 .Net 3.0 困住,那么唯一的方法就是编写自定义转换器。考虑在 .Net 4.0 可用时迁移到它,您将被设置 =)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 2014-09-22
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多