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();
}
}
谢谢,尼科
您可以编写自己的绑定转换器来限制显示的字符数。
例如,这个将简单地将显示的字符数限制为字符串中的前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>