2009-12-10 84 views
1

我有問題想出驗證用戶輸入的好方法。我知道我可以實現IDataErrorInfo對用戶輸入進行簡單的驗證,並且我已經閱讀了幾篇關於此主題的文章(如thisthis),但沒有看到燈光。讓我來解釋這兩個問題,我有:WPF自定義驗證MVVM

基本上我實現一個應用程序,允許用戶在系統中創建用戶。我的viewmodel使用一組WCF服務來保存它的工作。當有人想創建一個新用戶時,我可以很容易地看到如何使用IDataErrorInfo來禁止輸入空的用戶名。但是,如果用戶名不爲空,並且由於用戶名已存在導致對CreateUser服務的調用失敗,那麼我如何高亮用戶名文本框?我的第二個問題是我有兩個PasswordBox,密碼和RepeatPassword。由於我無法綁定到Password屬性,因此我看不到如何使用IDataErrorInfo方法驗證密碼是否爲空。此外,我需要確保這兩個密碼是相同的,所以這又需要一些自定義機制。

我絕不是在WPF的專家,也許我錯過了一些明顯的解決方案,所以請,如果你能,闡明如何解決這個一些。

由於提前,

克勞斯

回答

1

我們實現自定義的驗證,並給每一個領域的IsDirty,IsValid的和ErrorMessage屬性。然後我們設置控件,文本框,組合等,並使用數據觸發器來顯示對象狀態,如果它無效,我們可能會對控件進行一次小的檢查,並且當用戶懸停時出現帶有錯誤消息的工具提示。

here是一種變通方法,以密碼框,都存在安全問題在這裏,但一切都取決於你需要怎樣的安全是不是嗎?

+0

+1謝謝,我可以忍受安全問題。無論如何,它不比TextBox +遮罩更糟糕。 – 2009-12-10 12:20:09

1

爲了執行自定義的驗證,我會建議你FluentValidation.NET庫。

+0

+1謝謝你指點我。它看起來很有用。 – 2009-12-10 12:18:52