2017-08-29 2 views
1

Ich habe eine Benutzernamen-Bezeichnung und müssen dies als Großbuchstaben, aber dies sollte nur auf der Benutzeroberfläche beziehen. Die Daten (String) sollten in der db als tatsächlicher Fall gespeichert werden, was auch immer es ist. Könnte mir jemand sagen, ob es trotzdem möglich ist, es in Großbuchstaben umzuwandeln, ohne dies durch den Code dahinter zu tun?Anzeige Etikett Text in Großbuchstaben mit Xaml in Xamarin.Forms

Antwort

0

Wie Sie wissen sind, können Sie diese als solche hinter aus dem Code tun:

string data = "my data"; 
UILabel myLabel = new UILabel(); 
myLabel.Text = data.ToUpper(); 

Also wenn man bedenkt, dass Sie nicht wollen, es so zu tun, müssen Sie sich von UILabel abzuleiten und Erstellen Sie Ihre eigenen, fügen Sie dann einfach ToUpper() am Ende des Get; Set; Werte der Eigenschaft Text.

using CoreGraphics; 
using System; 
using UIKit; 

namespace MyApp.Controls 
{ 
    partial class Control_UpperLabel : UILabel 
    { 
     public Control_UpperLabel IntPtr handle) : base(handle) 
     { 
       // 
     } 

     public Control_UpperLabel() 
     { 
       // 
     } 

     public override void Draw(CGRect rect) 
     { 
      base.Draw(rect); 
     } 

     public override string Text { get => base.Text.ToUpper(); set => base.Text = value.ToUpper(); }  
    } 
} 

EDIT: Wie pro Kommentaren unten, hier ist eine alternative Lösung für Xamarin.Forms

Dieser Wert Konverter als Teil einer Bindungslösung verwendet.

public class StringCaseConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 

      string param = System.Convert.ToString(parameter) ?? "u"; 

      switch (param.ToUpper()) 
      { 
       case "U": 
        return ((string)value).ToUpper(); 
       case "L": 
        return ((string)value).ToLower(); 
       default: 
        return ((string)value); 
      } 

     } 

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

Es wäre in der XAML als solche verwendet werden:

Text="{Binding Text, Converter={StaticResource caseConverter}, ConverterParameter=u}}" 
+0

Ich möchte nicht das Etikett Text in Groß konvertieren, müssen nur Großbuchstaben angezeigt werden soll. Gibt es eine Möglichkeit, es nur als obere, aber nicht in Code hinter – Riyas

+0

@Riyas zu konvertieren Sie konvertieren nur die Zeichenfolge in den oberen, müssen Sie nicht, dass die Zeichenfolge irgendwo sonst, ich habe die Antwort aktualisiert oben, um die Texteigenschaft der Beschriftung zu erhöhen, anstatt ToUpper() für die Zeichenfolge zu verwenden, die Sie zuweisen. – Digitalsa1nt

+0

Wie bindet man das an ein Label in der Inhaltsansicht xaml? – Riyas

Verwandte Themen