使用UWP和x的字符串格式:绑定

时间:2015-12-01 17:25:59

标签: c# xaml uwp

有人知道在使用x:在UWP Windows 10应用程序中绑定时如何格式化日期吗?

我有一个TextBlock绑定(x:Bind)到我的ViewModel上的DateTime属性,该属性是从SQL读取的。我想将输出格式化为" dd / MM / yyy HH:mm(ddd)"。有一种简单的方法吗?

默认格式为" dd / MM / yyy HH:mm:ss"我认为它来自默认。可能会被替换吗?

感谢。

4 个答案:

答案 0 :(得分:21)

使用StringFormatConverter(请检查您是否使用了某个已包含该库的库,例如Cimbalino Toolkit):

public class StringFormatConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        if (value == null)
            return null;

        if (parameter == null)
            return value;

        return string.Format((string)parameter, value);
    }

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

将其添加到您的网页资源

<Page.Resources>
    <converters:StringFormatConverter x:Key="StringFormatConverter" />
</Page.Resources>

并像这样使用

<TextBlock Text="{x:Bind Text, Converter={StaticResource StringFormatConverter}, ConverterParameter='{}{0:dd/MM/yyy HH\\\\:mm (ddd)}'}" />

答案 1 :(得分:7)

你可以使用

{x:Bind ViewModel.DateTimeProperty.ToString("....")}

答案 2 :(得分:2)

Formated DateTime

Function binding比经典的Converter更好:

 <TextBlock Text="{x:Bind DateTimeToString(MyDateTime,'dd/MM/yyy HH\\\\:mm (ddd)')}" />

后面的代码(可以将其放在单独的类中):

//"Converter"
public string DateTimeToString(DateTime dateTime, string format) => dateTime.ToString(format);

public DateTime MyDateTime { get; set; } = DateTime.Now;

为什么它比经典转换器好?

  • Shorter->没有煮辫子代码
  • 强类型->在构建时检测异常。

答案 3 :(得分:0)

类似于后面的代码

xmlns:globalization="using:System.Globalization"
...

{x:Bind ViewModel.DateTimeProperty.ToString('dd/MM/yyy HH:mm (ddd)', globalization:DateTimeFormatInfo.InvariantInfo)}

...