TextBlock を TimeSpan にバインドしようとしていますが、TotalMinutes が 60 未満の場合は「X 分」と表示され、それ以外の場合は「X h」と表示されるようにフォーマットする必要があります。
それは可能ですか?xaml で tom ロジック テストが必要になる場合がありますか?
TextBlock を TimeSpan にバインドしようとしていますが、TotalMinutes が 60 未満の場合は「X 分」と表示され、それ以外の場合は「X h」と表示されるようにフォーマットする必要があります。
それは可能ですか?xaml で tom ロジック テストが必要になる場合がありますか?
カスタムIValueConverter
実装を使用する必要があります。それに関するいくつかのチュートリアルがあります。たとえば、Silverlight でのデータ バインディングの使用IValueConverter
です。
実装IValueConverter
は次のようになります。
public class TimeSpanToTextConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
if (!(value is TimeSpan))
throw new ArgumentException("value has to be TimeSpan", "value");
var timespan = (TimeSpan) value;
if (timespan.TotalMinutes > 60)
return string.Format("{0} h", timespan.Hours.ToString());
return string.Format("{0} m", timespan.Minutes.ToString());
}
public object ConvertBack(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}