2017-08-29 20 views
1

私はユーザー名ラベルを持っており、これを大文字で表示する必要がありますが、これはUIにのみ関連しています。データ(文字列)は実際のケースとしてdbに保存する必要があります。コードの背後にあるコードを大文字に変換せずに誰かに教えてもらえますか?Xamarin.Formsのxamlを使用してラベルテキストを大文字で表示

答えて

0

あなたはあなたのような背後にあるコードからこれを行うことができます認識しているとおり:

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

だから、あなたはそれをあなたがUILabelから派生する必要がありますこの方法を行うにはしたくないことを念頭にし、独自のものを作成してから、ToUpper()をget; setの最後に追加するだけです。 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(); }  
    } 
} 

編集:以下のコメントを1として、ここでこれは、結合溶液の一部として値変換を使用Xamarin.Forms

ための代替的な解決策です。

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

それはのようなXAMLで使用することになります。

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

私は上にラベルテキストを変換したいいけない、ちょうど大文字を表示する必要があります。上に表示してコード内で変換しないようにする方法はありますか? – Riyas

+0

@リヤあなたは文字列を上位に変換しているだけで、その文字列を他の場所で再利用する必要はありません。あなたの割り当て文字列でToUpper()を使用するのではなく、ラベルのtextプロパティを上にします。 – Digitalsa1nt

+0

これをコンテンツビューのラベルにバインドする方法xaml? – Riyas

関連する問題