0

TextBlock を TimeSpan にバインドしようとしていますが、TotalMinutes が 60 未満の場合は「X 分」と表示され、それ以外の場合は「X h」と表示されるようにフォーマットする必要があります。

それは可能ですか?xaml で tom ロジック テストが必要になる場合がありますか?

4

1 に答える 1

3

カスタム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();
    }
}
于 2013-05-05T11:53:23.380 に答える