2009-11-14 32 views
5

如何在WPF TextBox上設置正則表達式? 我希望文本框以某種預定義的格式接受輸入。 這可能嗎?如何在TextBox上設置正則表達式?

+2

嗨,請看看這個問題的答案。它似乎正是你所需要的:http://stackoverflow.com/questions/1103765/wpf-textbox-how-to-define-some-restriction – andyp 2009-11-14 16:02:09

回答

7

您有幾種選擇:

  • 您可以創建一個ValidationRule子類(見下文),並把它添加到你綁定的驗證程序屬性
  • 您可以在綁定屬性設置ValidationCallback,拋出如有異常該值是錯誤的,並使用this technique輕鬆顯示驗證錯誤
  • 您可以創建一個附加屬性,該屬性爲TextBox.TextChanged屬性註冊一個事件處理程序並實現您自己的驗證錯誤通知機制
  • 您可以在代碼中使用普通的文本框與TextBox_Changed處理器背後
  • 您可以從附加屬性處理PreviewKeyDown和PreviewTextInput如圖here
  • 可以使用由Jan

提到對於masked text box作爲任意正則表達式我通常會使用WPF的內置驗證功能或對綁定屬性進行驗證。對於特定的需求,PreviewKeyDown/PreviewTextInput或掩碼文本框可能會更好。

這裏是你將如何創建有效性規則的子類:

public class RegexValidationRule : ValidationRule 
{ 
    ... // Declare Regex property and Message property 

    public override ValidationResult Validate(object value, CultureInfo cultureInfo) 
    { 
    if(Regex.IsMatch((string)value)) 
     return ValidationResult.ValidResult; 
    else 
     return new ValidationResult(false, Message); 
    } 
} 
0

您可以檢查已更改的事件,也可以使用所謂的蒙面文本框。

+0

我無法在wpf中看到蒙面文本框 – viky 2009-11-14 15:24:42

+1

請參閱http:/ /stackoverflow.com/questions/481059/where-can-i-find-a-free-masked-textbox-in-wpf – 2009-11-14 16:02:41

相關問題