一種選擇是去一個轉換器,格式項的文本:
<ComboBox ItemSource="{Binding LogTimeSpan}"
Grid.Row="15"
Grid.Column="1"
Grid.ColumnSpan="2">
<ComboBox.Resources>
<ns:TimeSpanConverter x:Key="TimeSpanConverter" />
</ComboBox.Resources>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=., Mode=OneTime, Converter={StaticResource TimeSpanConverter}}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
在這裏你可以實現你的轉換器像下面
using System;
using System.Globalization;
using System.Windows.Data;
public class TimeSpanConverter : IValueConverter
{
public object Convert(object value,
Type targetType,
object parameter,
CultureInfo culture)
{
// I am using following extension method here: http://stackoverflow.com/a/4423615/57508
var timeSpan = (TimeSpan) value;
var result = timeSpan.ToReadableString();
return result;
}
public object ConvertBack(object value,
Type targetType,
object parameter,
CultureInfo culture)
{
throw new NotImplementedException();
}
}
如果您只需要一個基本的格式,你也可以使用一個綁定的StringFormat
:
<ComboBox ItemSource="{Binding LogTimeSpan}"
Grid.Row="15"
Grid.Column="1"
Grid.ColumnSpan="2">
<ComboBox.Resources>
<ns:TimeSpanConverter x:Key="TimeSpanConverter" />
</ComboBox.Resources>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=., Mode=OneTime, StringFormat={}{0:hh\\:mm\\:ss}}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
你在拉動如何格式化'TimeSpan'到'string',但忽略了這個問題的具體上下文,這是WPF。 –
其涉及的主題相同 –
該問題還顯示OP在格式化項目文本方面掙扎。至少,這並不清楚。另外,請不要包含僅鏈接的答案,請抓住鏈接的本質。 –