2016-03-17 66 views
1

我是WFP的新手,我正在做一個MVVM項目並試圖弄清楚事情......我讀了很多關於驗證的內容,但沒有找到我想要的內容。 我不想將驗證邏輯放在ViewModel或視圖中。我想要對業務邏輯層進行驗證,只有在那裏,這是一個單獨的項目,大概可以用於任何數據源或UI,所以我不能把WPF特定的東西放在它裏面。 我想使用FluentValidation,但我不知道如何鏈接它在我的ViewModel。 比方說,我有一個字段的條目表單,保存按鈕從業務邏輯請求Save方法,業務邏輯如果該字段爲空並顯示相應的消息(「請鍵入內容」),則會引發ValidationException。 如何將其鏈接到View/ViewModel以將其反映給用戶?何在ViewModel之外做WPF MVVM驗證?

任何幫助表示讚賞,對不起,如果這個問題是愚蠢的,這WPF是很難:)

編輯,回覆約翰·奧多姆:我得凡在我的ViewModel我有保存命令的點,這確實像

  try 
      { 
       EditedItem= itemService.PersistItem(EditedItem); 

      } 
      catch (ValidationException ex) 
      { 

       foreach (var result in ex.Errors) 
       { 
        Console.WriteLine("Property name: " + result.PropertyName); 
        Console.WriteLine("Error: " + result.ErrorMessage); 
        Console.WriteLine(""); 
       } 
      } 

我想的信息與我的觀點的CATCH部分的錯誤信息鏈接,並顯示給用戶

+1

你好,歡迎來到StackOverflow!你能告訴我們你迄今爲止的嘗試嗎? –

+0

是否有特定的理由來做到這一點?因爲MVVM的目的是將這些問題與業務邏輯分開。 –

+0

對我的驗證是業務邏輯的一部分。如果我想爲同一個系統創建一個Web UI,我將不得不復制驗證。除非我錯過了某些東西...... –

回答

0

你可以在用戶界面的單獨標籤,最初隱藏綁定不可見,視圖模型中的內容。 每當出現異常時,使標籤可見並在Viewmodel中設置其內容。

+0

這很簡單,謝謝!有用。 只是我有一個標籤顯示所有錯誤。我現在試着讓它的工作類似於「典型的」WPF驗證錯誤,每個字段一個,但我仍然希望代碼是通用的。我認爲我需要研究索引屬性,或者是某種東西,因爲從FluentValidator中,我確實收到了帶有消息和每個字段名稱的錯誤集合 –

+0

如果您認爲它已被回答,請選擇正確的答案:)。另外,如果你喜歡解決方案1請。 – Kumar