1

有没有人找到解决 TextBox 字段问题的方法,它的定义如下所示:

<TextBox MaxLength="10" AcceptsReturn="True"/>

在上述情况下,用户不能输入超过 10 个字符,只要他不使用“Enter”,它就可以工作。一旦他使用 enter 来刹车线,那么 TextBox 将让他每行再输入 +2 个字符。所以看起来负责尊重“MaxLength”属性的方法忽略了“CR LF”:(任何关于如何克服这个问题的建议都非常受欢迎。

4

2 回答 2

1

找到了解决该问题的方法。它并不完美,但可以完成工作。

我使用的是一个转换器,它使用用户输入从文本中删除“\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

于 2013-04-25T09:13:13.863 回答
0

我在没有转换器的情况下做到了这一点。如果您使用双向绑定,如下所示:

<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();
    }
}
于 2015-10-21T14:25:53.830 回答