有人知道在使用x:在UWP Windows 10应用程序中绑定时如何格式化日期吗?
我有一个TextBlock绑定(x:Bind)到我的ViewModel上的DateTime属性,该属性是从SQL读取的。我想将输出格式化为" dd / MM / yyy HH:mm(ddd)"。有一种简单的方法吗?
默认格式为" dd / MM / yyy HH:mm:ss"我认为它来自默认。可能会被替换吗?
感谢。
答案 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)
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;
答案 3 :(得分:0)
类似于后面的代码
xmlns:globalization="using:System.Globalization"
...
{x:Bind ViewModel.DateTimeProperty.ToString('dd/MM/yyy HH:mm (ddd)', globalization:DateTimeFormatInfo.InvariantInfo)}
...