如果AcceptsReturn = True,则不遵守TextBox中的MaxLength

时间:2013-04-24 07:59:02

标签: c# xaml winrt-xaml

有没有人找到TextBox字段问题的解决方案,其定义如下:

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我没有转换器就这样做了。如果您使用双向绑定,请执行以下操作:

public class KeywordsStatistic
{
    public string Keyword { get { return lib_motcle; } }
    public int NumActions { get { return nbrActions; } }

    private string lib_motcle { get; set; }
    private int nbrActions { get; set; }
}

然后,您可以对绑定属性的set函数应用类似的想法:

<TextBox Text="{Binding TextBoxText, Mode=TwoWay}" MaxLength="10" AcceptsReturns="True"/>