Как ограничить максимальную длину привязываемой метки? - PullRequest
0 голосов
/ 03 октября 2019

У меня есть ярлык, связанный с моей моделью вида. Иногда текстовое значение метки составляет всего несколько символов, но иногда оно превышает 20 символов.

Как ограничить максимальную длину текста метки?

Ответы [ 2 ]

2 голосов
/ 03 октября 2019

Вы можете использовать конвертер:

public class LabelMaxLengthConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        string labelText = value as string;

        if (labelText == null)
            return value;

        const int maxLength = 20;

        if (labelText.Length > maxLength)
            return labelText.Substring(0, maxLength);
        else
            return labelText;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

И в вашем xaml сначала определите этот конвертер в ресурсах страниц:

<ContentPage.Resources>
    <converters:LabelMaxLengthConverter x:Key="LabelMaxLengthConverter" />
</ContentPage.Resources>

И, наконец, в вашем ярлыке примените конвертер к привязке:

<Label Text="{Binding LabelText, Converter={StaticResource LabelMaxLengthConverter}}" />
1 голос
/ 04 октября 2019

Проверьте свойство LineBreakMode:

https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.label.linebreakmode?view=xamarin-forms

Вы можете установить для LineBreakMode вашего Label значение TailTruncation, чтобы Label усекал любые символы, которые не помещаются в выделенное ему пространство, и заменял их. их с эллипсами.

<Label Text="{Binding LabelText}" LineBreakMode="TailTruncation" />

Тогда вам просто нужно ограничить выделенную ширину метки до приемлемого размера. Как вы это сделаете, будет зависеть от вашего конкретного сценария.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...