这里有我的代码:
public partial class UpperLabel : Label
{
public UpperLabel()
{
this.SetDynamicResource(Label.FontFamilyProperty, "Roboto-Regular");
this.SetDynamicResource(Label.FontSizeProperty, "HeaderTextFontSize");
this.SetDynamicResource(Label.TextColorProperty, "HeaderTextColor");
}
}
我遇到的问题是我想这样做,以便标签始终以大写形式显示文本。这是我想做的,但是我相信鉴于我拥有的代码,这是不可能的。
public static readonly BindableProperty TextProperty =
BindableProperty.Create(nameof(Text), typeof(string), typeof(Label), default(string));
public string Text {
get
{
var value = (string)GetValue(TextProperty);
return !string.IsNullOrEmpty(value) ? value.ToUpper() : value;
}
set
{
SetValue(TextProperty, value);
}
}
请注意,我意识到一个建议是创建一个名为Text1的属性,然后将其更改为upper并设置Text。此外,还有其他解决方案,例如在带有Text属性的网格中包含Label。但是我仍然想知道是否可以做任何事情使标签变成大写。
答案 0 :(得分:1)
您可以这样做。
new public static readonly BindableProperty TextProperty =
BindableProperty.Create(nameof(Text), typeof(string), typeof(CustomLabel), default(string),propertyChanged: TextPropertyChanged);
private static void TextPropertyChanged(BindableObject bindable, object oldValue, object newValue)
{
var label = (CustomLabel)bindable;
label.Text = newValue.ToString().ToUpper();
}