1

我有一个TextBlock其文本绑定到实时股票代码(通过System.Date.Now)并且该绑定包含一个ValueConverter应该将字符串转换为大写的。但是,字符串不会产生大写字母(结果就好像转换器甚至不存在一样)。如何使绑定结果为大写?

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

2 回答 2

7

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

    <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
}
于 2012-02-22T20:58:23.100 回答
3

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

于 2012-02-22T20:41:45.103 回答