【问题标题】:Datepicker returning only dateDatepicker 仅返回日期
【发布时间】:2012-03-18 21:30:56
【问题描述】:

我使用 Datepicker 控件获取日期并将其显示在 WP7 的文本块中。我希望它只显示日期而不是时间。 Datepicker 只显示日期,但是当我想在 TextBlock 中显示它时,它会同时显示日期和时间。我使用数据绑定在 Datepicker 中设置日期:

public class Task
{
    public DateTime Date { get; set; }
    public Task()
    {
        Date = DateTime.Now;
    }
}

XAML:

<toolkit:DatePicker Value="{Binding Mode=TwoWay, Path=Date}" FlowDirection="RightToLeft" />
<TextBlock x:Name="TxbTaskDate" Text="{Binding Date}" />

如何让 TextBlock 只显示日期而不显示时间?

【问题讨论】:

  • 您可能还需要考虑本地化。一些答案直接使用日/月/年部分进行格式化,但在某些国家/地区(例如美国),它们会使用月/日/年。

标签: c# windows-phone-7 datepicker


【解决方案1】:

你应该添加一个 StringFormat

<TextBlock x:Name="TxbTaskDate" 
           Text="{Binding Date, StringFormat='{}{0:dd.MM.yyyy}'}" />

【讨论】:

    【解决方案2】:

    试试这个:

    <TextBlock x:Name="TxbTaskDate" Text="{Binding Date, StringFormat=d}" />
    

    【讨论】:

    • 我更喜欢这个,因为它会选择用户的语言环境
    【解决方案3】:

    .NET DateTime 始终包含时间。您的问题在于 TextBlock 中的格式

    <!-- untested -->
    <TextBlock x:Name="TxbTaskDate" Text="{Binding Date StringFormat={0:dd-MM-yyyy}}" />
    

    【讨论】:

    • 如果这能满足您的所有需求,那么它比ValueConverter 更简单。
    【解决方案4】:

    DateTime 包括一个时间组件,顾名思义。您可以在TextBlock 绑定中使用ValueConverter 来剥离时间并仅显示日期。

    在较高级别上,ValueConverter 将采用一种类型,例如 DateTime,并允许您对其进行一些转换。我可能会让它返回一个格式化的string:

    String.Format("{0:M/d/yyyy}", dt);
    

    这是good intro to ValueConverter,如果您以前没有使用过的话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      • 2018-05-03
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      • 1970-01-01
      相关资源
      最近更新 更多