簡體   English   中英

PRISM + TabControl +驗證=疼痛

[英]PRISM + TabControl + Validation = Pain

在我的應用程序中,我有帶有多個選項卡的對話框。 我正在使用PrismTabControl注冊視圖。

我想要的是驗證整個對話框以禁用/啟用保存按鈕。

問題:目前,我們有一個視圖觸發的驗證。 意味着每個綁定項都實現IDataErrorInfo接口。 顯示視圖時 ,綁定觸發界面,並在UI上顯示和錯誤。 ControlHasError屬性設置為true,保存按鈕被禁用。

但是直到顯示視圖,驗證才會生效。 我應該將驗證移到ViewModel並自行驗證Properties ,還是應該通過TabControl驗證非活動視圖的解決方案?

沒有足夠的信息可以解決您的問題,所以我只能猜測。 首先,您必須了解TabControl中沒有不活動的視圖。 一次在TabControls視覺樹中只有一個視圖,這就是選定的選項卡。 這意味着其他視圖將從視覺樹中刪除,直到被選中為止。 不過,這實際上並不重要,因為驗證是通過ViewModel控制的。 您的ViewModel最有可能將“命令”綁定到“保存”按鈕。 此命令應具有CanExecute定義,返回IDataErrorInfo.Error!= null(這意味着您沒有錯誤)。 在這里,您將檢查對象的有效性。 如果有任何錯誤,則返回false;否則,則返回true。 鈎住對象的屬性更改事件,然后調用SaveCommand.RaiseCanExecuteChange方法以重新檢查按鈕的狀態。

如果每個視圖選項卡都有其自己的ViewModel,因此它是自己的Save命令,我建議使用CompositeCommand。 這真的是一個未知數,因為我不知道您是如何構建對話框,視圖或ViewModels的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM