[英]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.