2012-02-28 54 views
1

以下是該場景。我有一個綁定到雙重屬性的UI上的文本框。如果在文本框中鍵入一個字符(比如說「#」),那麼WPF驗證對於應用程序來說是不夠的。我需要顯示自定義消息,並禁用代碼中的一些控件。 (這些被禁用的控件不是xaml的一部分。)截至目前,我能想到的唯一方法就是將文本框綁定到字符串屬性並使用TryParse方法。但是,這將是一個巨大的不便。有沒有辦法獲得通知,輸入了無效字符,而不必將屬性更改爲字符串類型?自定義處理無效字符輸入

回答

0

以及我在我的viewmodel中使用「字符串」解決方案。最適合於IDataErrorInfo和綁定。

但有時我也爲我的文本框使用InputMaskbehavior。所以用戶只需輸入爲輸入掩碼定義的字符即可。

0

如果您使用的是MVVM模式,那麼您的ViewModel中可能應該有一個字符串屬性,因爲這是在Textbox上輸入的內容。即使你需要模型的雙倍,你的視圖上也有一個字符串。然後你可以在字符串屬性上做任何你需要的驗證。喜歡的東西:

public string TextProperty 
{ 
    get 
    { 
     return _textProperty; 
    } 
    set 
    { 
     if (_textProperty != value) 
     { 
      _doubleProperty = this.TransformAndValidateString(value);    
      _textProperty = value; 
     } 
    } 
} 

關於時存在錯誤這裏看看禁用控件:

IDataErrorInfo

+0

有沒有辦法找出代碼中的一個錯誤值已進入?就像是在聆聽IDataErrorInfo引發的異常一樣? P.S.對不起,如果問題太基本。我是一名初學者。 – Tulip 2012-02-28 12:46:57

+0

IDataErrorInfo不會引發異常。它提供了一種方法,如果驗證失敗,它將返回一個帶有錯誤消息的字符串。爲什麼這種方法不適合你?請記住,如果答案可以幫助你,請立即行動。 – 2012-02-28 15:33:21