2013-04-24 28 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(); 
    } 
} 
相關問題