我有一个TextBlock
,其文本绑定为ticker(通过System.Date.Now
),并且该绑定包含一个ValueConverter
,它应该将字符串转换为大写。但是,字符串不会产生大写字母(结果就好像转换器不在那里)。如何将绑定结果设为大写?
<TextBlock
Text="{Binding Now,
Source={StaticResource ticker},
StringFormat={}{0:dddd\, MMMM d},
Converter={StaticResource CaseConverter}}" />
答案 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
再次销毁它,您可能希望将该格式化逻辑移动到转换器中(或使用类别转换器应用多个转换器)。