1
我有一個用戶名標籤,需要將其視爲大寫字母,但這應該只與UI有關。數據(字符串)應作爲實際情況保存在數據庫中,不管它是什麼。任何人都可以告訴我,如果無論如何將其轉換爲大寫而不通過後面的代碼進行操作?在Xamarin.Forms中使用xaml顯示標籤文本大寫
我有一個用戶名標籤,需要將其視爲大寫字母,但這應該只與UI有關。數據(字符串)應作爲實際情況保存在數據庫中,不管它是什麼。任何人都可以告訴我,如果無論如何將其轉換爲大寫而不通過後面的代碼進行操作?在Xamarin.Forms中使用xaml顯示標籤文本大寫
當你意識到你可以從後面的代碼做這樣:
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}}"
我不想標籤文本轉換爲上,只需要顯示大寫。有沒有什麼辦法只是將它顯示爲較高,但不能在後面的代碼中轉換 – Riyas
@Riyas您只將字符串轉換爲較高的字符串,無需在其他任何位置重複使用該字符串,無論哪種方式我都更新了答案上面的標籤的text屬性的上面,而不是在你分配的字符串上使用ToUpper()。 – Digitalsa1nt
如何將它綁定到內容視圖xaml中的標籤? – Riyas