代码之家  ›  专栏  ›  技术社区  ›  GibboK

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

  •  3
  • GibboK  · 技术社区  · 11 年前

    我在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 回复  |  直到 11 年前
        1
  •  9
  •   Rohit Vats    11 年前

    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}}"/>
    
        2
  •  -4
  •   Rolando    9 年前

    要使用样式,必须首先在UserControl中声明。资源:

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