使用StringFormat和大写转换器绑定表达式?

时间:2012-02-22 20:39:12

标签: wpf data-binding string-formatting valueconverter

我有一个TextBlock,其文本绑定为ticker(通过System.Date.Now),并且该绑定包含一个ValueConverter,它应该将字符串转换为大写。但是,字符串不会产生大写字母(结果就好像转换器不在那里)。如何将绑定结果设为大写?

<TextBlock 
        Text="{Binding Now,
                       Source={StaticResource ticker},  
                       StringFormat={}{0:dddd\, MMMM d}, 
                       Converter={StaticResource CaseConverter}}" />

2 个答案:

答案 0 :(得分:7)

H.B。是正确的。你需要一个更好的转换器:

    <TextBlock Text="{Binding Now, Source={StaticResource ticker}, Converter={StaticResource UpperCaseDateConverter}, ConverterParameter='dddd, MMMM d'}" />

转换器:

public class UpperCaseDateConverter : IValueConverter
{
    #region Implementation of IValueConverter

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return ((DateTime)value).ToString((string)parameter).ToUpperInvariant();
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    #endregion
}

答案 1 :(得分:3)

应该在StringFormat之前应用转换器,因此如果StringFormat再次销毁它,您可能希望将该格式化逻辑移动到转换器中(或使用类别转换器应用多个转换器)。