我如何大写使用ItemStringFormat在WPF

本文关键字:ItemStringFormat WPF 何大写 | 更新日期: 2023-09-27 18:04:28

假设我有一个组合框,其中的项绑定到字符串数组。我想使用ItemStringFormat以大写显示那些字符串。我怎么做呢?

更新:我不是完全不知道格式化字符串,但我已经搜索了MSDN的格式说明符,将字符串转为大写,由于某种原因,我只是找不到它!我希望它是"{0:U}"或"{0:S}"之类的东西。

我也不敢相信我居然在SO上找不到答案。

我如何大写使用ItemStringFormat在WPF

对不起,这是不可能的。然而,实现DataTemplate和值转换器是很简单的。

<UserControl.Resources>
    <converters:StringToUpperCaseConverter x:Key="ToUpperConverter"/>
</UserControl.Resources>
<ComboBox ItemsSource={Binding YourCollection}>
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text={Binding Path=YourValue, Converter="{StaticResource ToUpperConverter}}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
<ComboBox>

转换器

public class StringToUpperCaseConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return ((string)value).ToUpper();
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
    }
}

在互联网上和任何 WPF书籍中都有很多关于这两个主题的信息。

您可以指定转换器作为绑定的一部分。构建一个实现IValueConverter的类很简单,它只返回

  return ((string)value).ToUpper();

为什么不能直接使用.ToUpper();呢?