Есть ли способ переопределить текстовое свойство метки в XF? - PullRequest
2 голосов
/ 21 июня 2020

Вот код, который у меня есть:

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, а затем изменить это значение на верхнее и установить Текст. Также существуют другие решения, такие как включение метки в сетку со свойством Text. Но мне все еще интересно, можно ли что-нибудь сделать, чтобы метка отображалась в верхнем регистре.

1 Ответ

1 голос
/ 21 июня 2020

Вы можете так сделать.

    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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...