C#,UWP(文本块,绑定)

本文关键字:绑定 UWP 文本 | 更新日期: 2023-09-27 17:57:41

如何限制此TextBlock中的字符数
例如:最多只能显示5个字符。

<TextBlock >
    <Run Text="Tender Amount:"/>
    <Run Text="{Binding TenderAmount, 
                Converter={StaticResource StringFormatConverter}, 
                ConverterParameter='{}{0:C}'}" />
</TextBlock>

顺便说一句,这是我的转换器中的代码

public sealed class StringFormatConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        if (value == null)
            return null;
        if (parameter == null)
            return value;
        return string.Format((string)parameter, value);
    }
    public object ConvertBack(object value, Type targetType, object parameter,
        string language)
    {
        throw new NotImplementedException();
    }
}

谢谢,尼科

C#,UWP(文本块,绑定)

您可以编写自己的绑定转换器来限制显示的字符数。

例如,这个将简单地将显示的字符数限制为字符串中的前5个字符(或传递到字符串中的任何字符的字符串表示)。

public class StringLengthLimitConverter : IValueConverter
{
    public object Convert(object value, Type targetType, 
        object parameter, CultureInfo culture)
    {
        string val = value.ToString();
        int length = parameter as int? ?? 5;
        if (val.Length > length)
            return val.Substring(0, length);
        return val;
    }
    public object ConvertBack(object value, Type targetType, 
        object parameter, CultureInfo culture)
    {
        return DependencyProperty.UnsetValue;
    }
}

用法:

<Run Text="{Binding Path=TenderAmount, 
               Converter={StaticResource StringLengthLimitConverter},
               ConverterParameter=5}" />

根据实际要做的操作,您可能需要在末尾添加省略号()。

您必须编写自己的转换器,如:

public class StringMaxLengthConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        int MaxLength = Convert.ToInt32(parameter);
        string TheString = (string)Value;
        if (MaxLength > TheString.Length)
        {
            return TheString.SubString(0, MaxLength);
        }
        else
        {
            return TheString;
        }
    }
    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}

在您的资源中声明它,如:

<local:StringMaxLengthConverter x:Key="StrMaxLengthCvtr"/>

在你的文本块中使用它,并传递最大字符串长度,如:

<TextBlock >
  <Run Text="Tender Amount:"/>
  <Run Text="{Binding TenderAmount, Converter={StaticResource StrMaxLengthCvtr}, ConverterParameter=5}" />
</TextBlock>