簡體   English   中英

在WP7上格式化XAML中的日期

[英]Formatting a date in XAML on WP7

有沒有辦法使用XAML為Windows Phone 7格式化日期?

如果嘗試使用:

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

但我得到錯誤:

在'Binding'類型中找不到屬性'StringFormat'

在SL4內這是可能的......

<TextBlock Text="{Binding Date, StringFormat='MM/dd/yyyy'}}"/>

...在SL3中你需要使用IValueConverter

public class DateTimeToStringConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return String.Format("{0:MM/dd/yyyy}", (DateTime)value);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

如果你想要一個更強大的方法,你可以使用ConverterParameter

    public class DateTimeToStringConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
                if (parameter == null)
                    return ((DateTime)value).ToString(culture);
                else
                    return ((DateTime)value).ToString(parameter as string, culture);
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

然后在您的XAML中,您首先將轉換器定義為資源...

<namespace:DateTimeToStringConverter x:Key="MyDateTimeToStringConverter"/>

..然后引用它以及用於格式化DateTime值的可接受參數...

<TextBlock Text="{Binding Date, 
         Converter={StaticResource MyDateTimeToStringConverter}, 
         ConverterParameter=\{0:M\}}"/>

據我所知,StringFromat是Silverlight 4的功能,Silverlight for Windows Phone 7.0基本上是Silverlight 3 +一些附加功能。 我想沒有。

這可能就是你要找的東西。 RelativeDateTimeConverter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM