在WPF中,典型的驗證實現在屬性值更改時進行驗證。這提出了一個問題。如果您有「必填」字段,並且您單擊某個按鈕,則用戶在點擊按鈕時不會收到空的提醒。由於該值沒有變化,驗證不會發生。何時調用Required.GetBindingExpression驗證企業庫的驗證塊的空字段
有許多方法可以在線執行此驗證,在代碼隱藏,基礎視圖模型等中明確執行驗證。但是,我對Microsoft提出的解決方案感興趣。特別是,這適用於我目前使用的Microsoft企業庫中的驗證應用程序塊。 Microsoft建議的最佳實踐方法,在這裏: https://msdn.microsoft.com/en-us/library/ff664451(v=pandp.50).aspx
特別是他們的狀態:
如果驗證控制攜帶必需的驗證屬性是空的,首先,和驗證過程中保持爲空值,源不會更新並且不會進行驗證。在這種特殊情況下,ValidateOnTargetUpdate屬性不起作用,因爲目標的空默認值不會改變。相反,你可以在綁定調用UpdateSource強制驗證發生,如下所示:
this.Required.GetBindingExpression(TextBox.TextProperty).UpdateSource();
的驗證規則在ConvertedProposedValue步驟進行操作,該值已經被轉換之後,但在它被設置來源。這意味着價值轉換錯誤必須通過其他機制來檢測。一種方法是在驗證的綁定上啓用ValidatesOnDataErrors屬性。
不幸的是,我無法理解這一點。我在哪裏調用UpdateSource方法? this
在微軟的代碼片段中提及哪個對象?我假設我需要做一些事情,比如攔截某個地方的綁定,但我不確定。
你的'Window'類沒有要求就會有這個功能,所以如果你在'MainWindow.xaml.cs'中輸入它,它會給你'GetBindingExpression'函數。這也可以在任何'Controls'中使用。 – XAMlMAX