无论我如何格式化DateTime,AM / PM始终显示在左侧。我用过“ G”,“ hh:mm:ss tt”,我只是在输入随机数字后加上“ tt”,当它在堆栈面板中时,它总是出现在左侧。在堆栈面板外部,这很好。有什么想法吗?
create
输出: PM hh:mm:ss MM / dd / yyyy
答案 0 :(得分:3)
使用具有不同文化的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();
}
}
答案 1 :(得分:2)
经过测试,可以正常工作。
TimeStamp
必须为DateTime
。
public DateTime TimeStamp { get; set; } = DateTime.Now;
<TextBlock Text="{Binding TimeStamp, StringFormat='{}{0:tt hh:mm:ss MM/dd/yyyy}' }"/>