2016-03-17 140 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