2013-04-24 46 views
1

有谁找到的TextBox现场解决问题,在它的定义是这样的:的MaxLength在文本框的不尊重,如果AcceptsReturn =真

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

在上述情况下,用户不应该能够进入超过10字符,只要他不使用“Enter”,它就可以工作。只要他使用enter键来刹车线,那么TextBox会让他每行输入更多的字符+2。 所以看起来这个方法负责尊重“的MaxLength”属性忽略“CR LF” :( 任何建议如何克服这个问题真的欢迎。

+0

哪个WPF的版本是您使用? – 2013-04-24 08:07:50

+0

这不是WPF,而是WinRT。 – 2013-04-25 15:23:40

回答

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

0

我这样做无需转换器。如果使用的是双向绑定,如下所示:

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

那么你可以申请一个类似的想法来绑定属性的设定功能:

private string _textboxtext; 
public string TextBoxText 
{ 
    get{return _textboxtext;} 
    set 
    { 
     _textboxtext=value.Replace("\r",""); 
     OnPropertyChanged(); 
    } 
}