這個問題在這里已經有了答案: 如何在 XAML 中格式化 TimeSpan 11 個答案 TimeSpan ToString 格式 7 個答案 16 小時前關閉。
我想將 TimeSpan 物件的字串格式化為以下示例:10h 12m 55s
我怎樣才能做到這一點?
xml
<TextBlock Grid.Column="2" Grid.Row="4" FontSize="20" Text="{Binding Path=ElapsedTime}"/>
xml.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Streaming StreamingTest = new Streaming();
DataContext = StreamingTest;
}
}
public class Streaming
{
// code
public TimeSpan ElapsedTime
{
get
{
return DateTime.Now - startTime;
}
}
}
uj5u.com熱心網友回復:
您可以使用StringFormat={}{0:h}
. 但Timespan
格式不像Datetime
. 您可以通過以下方式實作。
- 將時間跨度轉換為日期時間
DateTime newElapsedTime = new DateTime() ElapsedTime;
然后就這樣使用
<TextBlock Text="{Binding Path=newElapsedTime, StringFormat={}{0:HH}h {0:mm}m {0:ss}s }" />
或者
- 撰寫自己的轉換器
public class TimeSpanFormatter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var ts=(TimeSpan)value;
return string.Format("{0}h {1}m {2}s",ts.Hours,ts.Minutes,ts.Seconds);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
然后就這樣使用。在資源部分用 name 宣告格式化程式TimeSpanFormatter
。
<TextBlock Text="{Binding Path=ElapsedTime,Converter={StaticResource TimeSpanFormatter}}"></TextBlock>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494715.html