在 WP7 上用 XAML 格式化日期

发布于 2024-10-11 18:49:53 字数 217 浏览 2 评论 0原文

有没有办法使用 Windows Phone 7 的 XAML 来格式化日期?

如果尝试使用:

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

但我收到错误:

在“Binding”类型中找不到属性“StringFormat”

Is there a way to format a date using XAML for Windows Phone 7?

If tried using:

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

But I get the error:

The property 'StringFormat' was not found in type 'Binding'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

哭了丶谁疼 2024-10-18 18:49:53

在 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\}}"/>

Within SL4 this is possible...

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

...within SL3 you would need to make use of an 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();
    }
}

If you wanted a more robust approach you could make use of the 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();
        }
    }

Then in your XAML you would first define the converter as a resource...

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

..then reference it along with an acceptable parameter for formatting the DateTime value...

<TextBlock Text="{Binding Date, 
         Converter={StaticResource MyDateTimeToStringConverter}, 
         ConverterParameter=\{0:M\}}"/>
流星番茄 2024-10-18 18:49:53

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

As far as I'm aware StringFromat is Silverlight 4 function, Silverlight for Windows Phone 7.0 is basically Silverlight 3 + some extras. I guess no then.

千年*琉璃梦 2024-10-18 18:49:53

这可能就是您正在寻找的。
RelativeDateTimeConverter

This is probably what you are looking for.
RelativeDateTimeConverter

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文