如何在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>
您可以这样使用转换器:
<TextBlock Margin="5,0,0,0" FontSize="20" Text="{Binding name, Converter ={StaticResource myConverter}}" />
关于如何实现转换器的具体信息可以在这里找到。你可以对文本执行任何你喜欢的操作。我喜欢Humanizer来做这种类型的文本转换