2017-08-29 70 views
1

我有一個用戶名標籤,需要將其視爲大寫字母,但這應該只與UI有關。數據(字符串)應作爲實際情況保存在數據庫中,不管它是什麼。任何人都可以告訴我,如果無論如何將其轉換爲大寫而不通過後面的代碼進行操作?在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(); }  
    } 
} 

編輯:由於每下面的評論,這裏是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

@Riyas您只將字符串轉換爲較高的字符串,無需在其他任何位置重複使用該字符串,無論哪種方式我都更新了答案上面的標籤的text屬性的上面,而不是在你分配的字符串上使用ToUpper()。 – Digitalsa1nt

+0

如何將它綁定到內容視圖xaml中的標籤? – Riyas

相關問題