2014-07-25 5 views
7

Ich möchte, dass alle Zeichen in einem Textblock in GroßWPF/XAML: Wie wird der gesamte Text in TextBlock groß geschrieben?

<TextBlock Name="tbAbc" 
      FontSize="12" 
      TextAlignment="Center" 
      Text="Channel Name" 
      Foreground="{DynamicResource {x:Static r:RibbonSkinResources.RibbonGroupLabelFontColorBrushKey}}" /> 

Die Saiten durch Bindung getroffen werden, angezeigt werden. Ich möchte die Zeichenfolgen im Wörterbuch selbst nicht groß schreiben.

+0

siehe [C# String-Format-Flag oder Modifikator Kleinbuchstabe] (http://stackoverflow.com/questions/1839649/c-sharp-string-format-flag-oder-modifier-to-lowercase-param) – pushpraj

+0

Mögliches Duplikat von [WPF/XAML: wie man den ganzen Text macht Groß-/Kleinschreibung?] (http://stackoverflow.com/questions/1762485/wpf- xaml-how-to-make-all-text-Großbuchstaben-Kapital) –

Antwort

10

einen benutzerdefinierten Konverter implementieren.

using System.Globalization; 
using System.Windows.Data; 
// ... 
public class StringToUpperConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if (value != null && value is string) 
     { 
      return ((string)value).ToUpper(); 
     } 

     return value; 
    } 

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

Dann schließen, dass in XAML als Ressource:

<local:StringToUpperConverter x:Key="StringToUpperConverter"/> 

und fügen Sie Ihre Bindung:

Converter={StaticResource StringToUpperConverter} 
2

Wenn es keine große Sache ist Sie TextBox verwenden könnte anstelle von TextBlock wie folgt:

<TextBox CharacterCasing="Upper" IsReadOnly="True" /> 
+0

@ user3876923 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – RazvanR

+0

Es ist nicht wirklich eine akzeptable Antwort obwohl die Frage nach TextBlock fragt. –

+1

@StephenDrew Ich bat ihn nicht, meine Antwort zu akzeptieren, sondern ließ ihn wissen, dass er einen akzeptieren sollte (derjenige, der ihm am meisten geholfen hat - das ist alles über diese Seite, oder?). Meiner Meinung nach ist die mit dem Konverter eine gute Antwort. (Meine ist nur eine Alternative). – RazvanR

1

Ich benutze ein Zeichen Gehäuse Werteumwandler:

class CharacterCasingConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     var s = value as string; 
     if (s == null) 
      return value; 

     CharacterCasing casing; 
     if (!Enum.TryParse(parameter as string, out casing)) 
      casing = CharacterCasing.Upper; 

     switch (casing) 
     { 
      case CharacterCasing.Lower: 
       return s.ToLower(culture); 
      case CharacterCasing.Upper: 
       return s.ToUpper(culture); 
      default: 
       return s; 
     } 
    } 

    object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotSupportedException(); 
    } 
} 
15

Oder

Typography.Capitals="AllSmallCaps" 

in Ihrer TextBlock Definition verwenden.

Siehe hier: MSDN - Typography.Capitals

EDIT:

Dies funktioniert nicht in Windows Phone 8.1, nur in Windows 8.1 ...

+2

Dies funktioniert nicht, Großbuchstaben werden Großbuchstaben und Kleinbuchstaben Kleinbuchstaben. – Wouter