C# 使用UWP和x:Bind的字符串格式

C# 使用UWP和x:Bind的字符串格式,c#,xaml,uwp,C#,Xaml,Uwp,有人知道在UWP Windows 10应用程序中使用x:Bind时如何格式化日期吗 我有一个TextBlock,它被绑定(x:Bind)到我的ViewModel上的DateTime属性,该属性是从SQL读取的。我想将输出格式化为“dd/MM/yyy HH:MM(ddd)”。有没有一个简单的方法可以做到这一点 默认格式是“dd/MM/yyy HH:MM:ss”,我认为这是默认格式。这个可能会被替换吗 谢谢。使用StringFormatConverter(检查您是否可能使用一些已经包含它的库,例如(

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

我有一个TextBlock,它被绑定(x:Bind)到我的ViewModel上的DateTime属性,该属性是从SQL读取的。我想将输出格式化为“dd/MM/yyy HH:MM(ddd)”。有没有一个简单的方法可以做到这一点

默认格式是“dd/MM/yyy HH:MM:ss”,我认为这是默认格式。这个可能会被替换吗


谢谢。

使用
StringFormatConverter
(检查您是否可能使用一些已经包含它的库,例如(谢谢,@maxp)或更旧的库):

将其添加到页面资源中

<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)}'}" />

您可以使用

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

是比经典转换器更好的方法:


代码隐藏(可以放在单独的类中):

/“转换器”
公共字符串DateTimeToString(DateTime DateTime,字符串格式)=>DateTime.ToString(格式);
public DateTime MyDateTime{get;set;}=DateTime.Now;
为什么它比经典转换器更好?
  • 较短->无编结代码
  • 强类型->在生成时检测异常

完美。非常感谢你。我刚刚注意到这也是UWP工具包的一部分:你当然可以,只要你的目标创建者更新在我的案例中不起作用,因为编译器解释说我调用的是ToString(IFormatProvider)重载,所以我要像这样调用(string,IFormatParameter)重载:{x:Bind ViewModel.DateTimeProperty.ToString(“…”,{x:Null})}
{x:Bind ViewModel.DateTimeProperty.ToString("....")}