從我的閱讀和嘗試理解和實現MVVM和驗證,我需要一些幫助下面的情況。綁定驗證更新錯誤視圖
查看 - 用戶界面(預期)
模式 - 基於數據表,並通過OnColumnChanging,對列逐列基礎的驗證要求測試(這部分作品沒有問題)
ViewModel - 將連接模型粘貼到視圖上,這也起作用。
對於每個文本框控件,我分別綁定雙向數據表,當前行(仍然沒有問題),並按預期顯示數據。這些標誌包括:NotifyOnTargetUpdated,ValidatesOnDataErrors,ValidatesOnExceptions和NotifyOnValidationError都設置爲true。
如果我使用接口並輸入了無效值,它會正確觸發驗證,並將紅色邊框放在控件上顯示它失敗。
現在的問題。我開始我的表單,然後單擊「添加」按鈕(新記錄,空值),現在啓用了用於編輯內容的文本框控件。點擊「保存」按鈕。我想要刷新所有缺少「必需」數據的控件。由於我的視圖模型綁定到數據表的列,並且從我的閱讀中,所有的驗證都應該在視圖模型中處理,我應該如何調整我的場景。
我不知道如何強制哪些控件綁定到各自的控件時,他們從來沒有收到焦點。另外,從其他閱讀中,爲了允許進行單元測試,您應該能夠在沒有用戶界面的假設下進行測試。因此,理論上,我可以自動創建我的viewmodel,它加載我的數據模型,添加記錄,嘗試保存並強制測試所有「必需」字段。
我關閉嗎???離開?對此不太積極。
正如我的問題所述。視圖模型有一個子類數據表的實例,它有其驗證THERE而不是視圖模型本身。文本框綁定到數據表的列...幾乎就像通過視圖模型的一個步驟(即:路徑將從視圖到ViewModel - > MyDataTable - >(Columns)MyDataColumn ...所以沒有直接的INotifyPropertyChange在視圖模型本身...所以我怎麼會從數據表中觸發它不知道它的列是綁定的(即使用反射???) – DRapp
@DRapp:這實際上是第一點,你驗證用戶輸入模型的一面,在我看來,在這種情況下,可以在ModelView方面更容易完成。不是UIError-> ModelViewProperty-> BindedModel-> Validation-> Error-> ModelView-> UI,而是UIError-> ModelView- > Validation->錯誤 - > UI。 – Tigran