如何在WPF中的TextBlock上应用CharacterCasing?

时间:2014-03-03 09:18:41

标签: .net wpf xaml wpf-controls

我在WPF应用程序中有一个特定的TextBlock。 我需要为该特定的TextBlock创建大写文本。

尝试使用以下代码时出现此错误:

{"'TextUpperCase' is not a valid value for property 'Style'."}

知道怎么解决吗?

  <Style x:Key="TextUpperCase" TargetType="{x:Type TextBox}">
        <Setter Property="CharacterCasing" Value="Upper"/>
    </Style>


                <TextBlock
                    x:Name="ShopNameTextBlock"
                    TextWrapping="Wrap"
                    Text="{Binding Description, FallbackValue=Shop name}"
                    Style="TextUpperCase"
                    VerticalAlignment="Center" 
                    FontFamily="/GateeClientWPF;component/Fonts/#Letter Gothic L"
                    FontSize="45"
                    Grid.ColumnSpan="2"
                    Margin="0,60,0,0"
                    FontWeight="Medium"
                    TextAlignment="Center"
                    Foreground="Black"
                    />

2 个答案:

答案 0 :(得分:8)

CharacterCasing不是TextBlock的有效属性,而是TextBox的有效属性。

您可以拥有IValueConverter并将其用于将文本转换为上限的绑定。


声明转换器:

public class ToUpperValueConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter,
                          CultureInfo culture)
    {
        if (value is string)
        {
           return value.ToString().ToUpper();
        }
        return String.Empty;
    }

    public object ConvertBack(object value, Type targetType, object parameter,
                              CultureInfo culture)
    {
        return Binding.DoNothing;
    }
}

现在,在XAML中添加转换器的引用并使用如下:

<TextBlock Text="{Binding Description,
                  Converter={StaticResource ToUpperValueConverter}}"/>

答案 1 :(得分:-4)

要使用样式,必须首先在UserControl.Resources中声明:

<UserControl.Resources>
        <Style x:Key="TextUpperCase" TargetType="{x:Type TextBox}">
            <Setter Property="CharacterCasing" Value="Upper"/>
        </Style>
</UserControl.Resources>