繁体   English   中英

如何在StackPanel中使用DateTime字符串格式?

[英]How to use DateTime string format in a StackPanel?

无论我如何格式化DateTime,AM / PM始终显示在左侧。 我用过“ G”,“ hh:mm:ss tt”,我只是在输入随机数字后加上“ tt”,当它在堆栈面板中时,它总是出现在左侧。 在堆栈面板外部,这很好。 有任何想法吗?

<StackPanel Grid.Row="0" Grid.Column="1" Orientation="Horizontal" FlowDirection="RightToLeft">

    <TextBlock Text="{Binding Timestamp, StringFormat=G}" HorizontalAlignment="Right" FontSize="14"/>

    <TextBlock Text="{Binding Sender.FirstName}" HorizontalAlignment="Right" Margin="50,0,0,0" FontSize="14"/>

</StackPanel>

输出:PM hh:mm:ss MM / dd / yyyy

使用具有不同区域性的StringFormat将显示不同的值,IMO更好的方法是使用Converter并将区域性设置为InvariantCulture 当我刚接触WPF时,我就一直面对这种情况,这种方法对我很有帮助。

<TextBlock Text="{Binding Timestamp, Converter={StaticResource DateTimeToStringConverter}}" 
           HorizontalAlignment="Right" FontSize="14"/>

您可以使用转换器使用您选择的字符串格式:

public class DateTimeToStringConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is DateTime)
            return ((DateTime)value).ToString("G", CultureInfo.InvariantCulture);

        return null;
    }

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

经过测试和工作。

TimeStamp必须为DateTime

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

<TextBlock Text="{Binding TimeStamp, StringFormat='{}{0:tt hh:mm:ss MM/dd/yyyy}' }"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM