Xaml 如何限制可装订标签的最大长度?

Xaml 如何限制可装订标签的最大长度?,xaml,xamarin.forms,Xaml,Xamarin.forms,我有一个绑定到视图模型的标签。有时标签的文本值只有几个字符,但有时超过20个字符 如何限制标签文本的最大长度?您可以使用转换器: public class LabelMaxLengthConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { string labelText =

我有一个绑定到视图模型的标签。有时标签的文本值只有几个字符,但有时超过20个字符


如何限制标签文本的最大长度?

您可以使用转换器:

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}}" />

您可以使用转换器:

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}}" />

检查LineBreakMode属性:

您可以将标签的LineBreakMode设置为TailTruncation,以使标签截断任何不适合其分配空间的字符,并将其替换为省略号

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


然后,您只需要将标签的分配宽度限制为可接受的大小。如何执行此操作取决于您的特定场景。

请查看LineBreakMode属性:

您可以将标签的LineBreakMode设置为TailTruncation,以使标签截断任何不适合其分配空间的字符,并将其替换为省略号

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

然后,您只需要将标签的分配宽度限制为可接受的大小。如何做到这一点取决于您的具体情况