如果AcceptsReturn=True,则不尊重TextBox中的MaxLength
本文关键字:TextBox 中的 MaxLength AcceptsReturn True 如果 | 更新日期: 2023-09-27 18:10:33
有没有人找到解决问题的TextBox字段,它的定义看起来像这样:
<TextBox MaxLength="10" AcceptsReturn="True"/>
在上述情况下,用户不应该能够输入超过10个字符,只要他不使用"enter",它就可以工作。一旦他使用回车键来刹车,那么TextBox将让他每行多输入2个字符。因此,看起来负责尊重"MaxLength"属性的方法忽略了"CR LF":对于如何解决这个问题,欢迎提出任何建议。
找到了解决这个问题的方法。它不是完美的,但它完成了工作。
我使用的是一个转换器,从文本中删除"'r"字符,用户输入:
public class RemoveLineFeedCharConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
return value; //do not convert in that direction
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
var text = (string) value;
return text.Replace("'r", ""); //remove line feed character
}
}
如前所述,这不是完美的,但至少使输入的文本比MaxLength短。
希望这能帮助到别人
的问候MG
我这样做没有转换器。如果您使用的是双向绑定,如以下所示:
<TextBox Text="{Binding TextBoxText, Mode=TwoWay}" MaxLength="10" AcceptsReturns="True"/>
那么你可以把类似的想法应用到绑定属性的set函数上:
private string _textboxtext;
public string TextBoxText
{
get{return _textboxtext;}
set
{
_textboxtext=value.Replace("'r","");
OnPropertyChanged();
}
}