Riy*_*yas 3 c# xaml label xamarin.ios xamarin.forms
我有一个用户名标签,需要将其视为大写,但这仅与UI有关。数据(字符串)应按实际情况保存在数据库中,无论它是什么。有人可以告诉我是否有将其转换为大写的方式,而无需通过后面的代码进行吗?
小智 18
您可以Label.TextTransform
与TextTransform.Uppercase
.
XAML
<Label TextTransform="Uppercase" />
Run Code Online (Sandbox Code Playgroud)
C#
var label = new Label
{
TextTransform = TextTransform.Uppercase
};
Run Code Online (Sandbox Code Playgroud)
如您所知,您可以从后面的代码中执行以下操作:
string data = "my data";
UILabel myLabel = new UILabel();
myLabel.Text = data.ToUpper();
Run Code Online (Sandbox Code Playgroud)
因此请记住,您不想这样做,您需要从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(); }
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:根据下面的评论,这是Xamarin.Forms的替代解决方案
这将值转换器用作绑定解决方案的一部分。在下面的评论中使用clint的建议也进行了稍微修改。谢谢。
public class StringCaseConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
switch ((parameter as string).ToUpper()[0])
{
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();
}
}
Run Code Online (Sandbox Code Playgroud)
它将在XAML中这样使用:
Text="{Binding Text, Converter={StaticResource caseConverter}, ConverterParameter=u}}"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5435 次 |
最近记录: |