在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