2012-07-05 73 views
0

我有一個關於如何在下面的設置中最好地執行驗證的問題。我有一個小的基於WPF的用戶界面(使用WAF框架)。該特定對話框包含一個DecimalUpDown控件(這是來自WPF擴展工具包),用戶可以使用上/下箭頭或鍵入或粘貼來修改該值。在WPF中執行驗證(WAF框架)

用戶不應該被允許繼續(下一步按鈕應該被禁用),直到提供一個有效的數字(格式和範圍)。用戶還應該意識到,這個字段的價值在於阻止他們繼續下去。 如何執行此驗證?

我有一個非常簡單的視圖模型 - 它包含一個float FooValue屬性(綁定到上/下控制),並實現其父容器結合(對Next按鈕的啓用狀態)的bool IsValid()

enter image description here

我注意到一些其他網站的建議,我應該在二傳手(例如http://www.codeproject.com/Articles/15239/Validation-in-Windows-Presentation-Foundation)拋出異常。這裏沒有意義,因爲我的房產是float。是否應該綁定到數字上/下的「文本」值,並在View Model級別執行解析(並拋出異常)?

+0

您確定您的意思是WAF嗎?我認爲你的意思是MEF - http://mef.codeplex.com/ – EkoostikMartin 2012-07-05 20:59:05

+0

100%確定我的意思是WAF。 http://waf.codeplex.com/ – jglouie 2012-07-05 21:01:01

+0

我只聽說過WAF的含義 - http://code.google.com/p/waf/ - 我認爲這就是SO標籤的用途。 – EkoostikMartin 2012-07-05 21:03:02

回答

0

在waf.codeplex.com上,實際上有一個示例顯示如何進行數據輸入驗證 - http://www.codeplex.com/Download?ProjectName=waf&DownloadId=282750。它使用框架源代碼中包含的BookLibrary示例應用程序。

基本上,您將在您的屬性上使用數據註釋,在您的XAML元素上使用ValidatesOnDataErrors=true屬性。

+0

感謝PDF,但這種情況似乎比他們使用的屬性更復雜一點。例如,如果我們將本地化放在頭腦中(例如,在某些地區10.8可能是正確的,在其他地區10,8可能是正確的),我們不能脫離編譯時const的正則表達式。 – jglouie 2012-07-05 21:39:04