2014-07-25 8 views
7

मैं चाहता हूँ एक TextBlock में सभी पात्रों अपरकेसडब्ल्यूपीएफ/एक्सएएमएल: टेक्स्टब्लॉक में सभी टेक्स्ट ऊपरी केस कैसे बनाएं?

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

में प्रदर्शित करने के लिए तार बाइंडिंग के माध्यम से लिया जाता है। मैं स्ट्रिंग्स अपरकेस को डिक्शनरी में ही नहीं बनाना चाहता हूं।

+0

[सी # स्ट्रिंग प्रारूप झंडा या करने के लिए आपरिवर्तक देखना लोअरकेस परम] (http://stackoverflow.com/questions/1839649/c-sharp-string-format-flag-or-modifier-to-lowercase-param) – pushpraj

+0

[WPF/XAML का संभावित डुप्लिकेट: सभी टेक्स्ट कैसे बनाएं ऊपरी मामला/पूंजी?] (http://stackoverflow.com/questions/1762485/wpf- xaml-how-to-make-all-text-upper-case-capital) –

उत्तर

0

Converter के बारे में कैसे है जो आपके टेक्स्ट को अपरकेस में परिवर्तित करता है। इस तरह आप मूल पाठ अपरिवर्तित रहता है।

How to use IValueConverter in Binding of WPF

10

एक कस्टम कनवर्टर को लागू करें।

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; 
    } 
} 

तो शामिल है कि एक संसाधन के रूप में अपने XAML में:

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

और अपने बंधन में जोड़ें:

Converter={StaticResource StringToUpperConverter} 
2

यदि यह एक बड़ी बात नहीं आप पाठ बॉक्स इस्तेमाल कर सकते हैं नहीं हैटेक्स्टब्लॉक की बजाय:

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

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

+0

यह वास्तव में नहीं है हालांकि एक स्वीकार्य उत्तर हालांकि सवाल टेक्स्टब्लॉक के बारे में पूछता है। –

+1

@StephenDrew मैं ** ** नहीं था कि वह मुझे अपना जवाब स्वीकार करने के लिए कह रहा है, बस उसे यह बताने के लिए कि उसे एक स्वीकार करना चाहिए (जिसने उसे सबसे ज्यादा मदद की - यह सब इस साइट के बारे में है, है ना?)। मेरी राय में, कनवर्टर वाला एक अच्छा जवाब है। (मेरा सिर्फ एक विकल्प है)। – RazvanR

1

मैं एक चरित्र आवरण मूल्य कनवर्टर का उपयोग:

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

या अपने TextBlock परिभाषा का उपयोग

Typography.Capitals="AllSmallCaps" 

यहाँ देखें: MSDN - Typography.Capitals

संपादित करें:

यह विंडोज फोन 8.1 में काम नहीं करता, केवल Windows 8.1 ... में

+2

यह काम नहीं करता है, राजधानियां बड़ी राजधानियां होंगी और निचले मामले के पात्र छोटी राजधानियां होंगी। – Wouter

संबंधित मुद्दे