如何在WP8中使用XAML和c#实现TexBlock中单词首字母大写的转换器

本文关键字:单词首 TexBlock 实现 转换器 WP8 XAML | 更新日期: 2023-09-27 18:01:44

我有一个数据模板在XAML中的TexBlock。这个TexBlock在单词列表中显示单词。我要把每个单词的第一个字母大写,因为所有单词都是小写的。

<phone:PhoneApplicationPage.Resources>
        <DataTemplate x:Key="AddrBookItemTemplate">
            <StackPanel VerticalAlignment="Top">
                <TextBlock Margin="5,0,0,0" FontSize="20" Text="{Binding name}" />
            </StackPanel>
        </DataTemplate>
 </phone:PhoneApplicationPage.Resources>
在c#中实现转换器
namespace Converter.ViewModels

{

    public class ToCapitalizeConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                return char.ToUpper(value.ToString()[0]) + value.ToString().Substring(1);
            }
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                return (value as string).ToLower();
            }
        }
}
在App.xaml

…xmlns: vm = " clr-namespace:转换器。视图模型"

   <Application.Resources>
          <vm:ToCapitalizeConverter x:Key="ToCapitalizeConverter"/>    
    </Application>
在MainPage.xaml

<phone:PhoneApplicationPage.Resources>
    <DataTemplate x:Key="AddrBookItemTemplate">
                <StackPanel VerticalAlignment="Top">
                    <TextBlock Margin="5,0,0,0" FontSize="20" Text="{Binding name, Converter={StaticResource ToCapitalizeConverter}}" />                 
                </StackPanel>
           </DataTemplate>
     </phone:PhoneApplicationPage.Resources>

如何在WP8中使用XAML和c#实现TexBlock中单词首字母大写的转换器

您可以这样使用转换器:

<TextBlock Margin="5,0,0,0" FontSize="20" Text="{Binding name, Converter ={StaticResource myConverter}}" />

关于如何实现转换器的具体信息可以在这里找到。你可以对文本执行任何你喜欢的操作。我喜欢Humanizer来做这种类型的文本转换