Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不同操作的不同验证规则_C#_Wpf_Validation_Mvvm - Fatal编程技术网

C# 不同操作的不同验证规则

C# 不同操作的不同验证规则,c#,wpf,validation,mvvm,C#,Wpf,Validation,Mvvm,我有一个表单,上面有3个按钮:保存、批准和拒绝 现在,我需要根据所单击的按钮,以不同的方式验证用户的输入。 例如,即使大多数字段为空,用户也应该能够保存对象,但为了批准,某些字段是必需的 一种方法是将验证置于CanSave和CanApprove方法(按钮绑定到ViewModel中的ICommand)。这里的问题是按钮被禁用,但没有指示需要填充哪些字段才能启用特定的按钮 理想情况下,应始终启用所有按钮,并在单击按钮时执行验证。但如何从VM中将字段标记为无效 尝试在类上添加类似于LastStateV

我有一个表单,上面有3个按钮:保存、批准和拒绝

现在,我需要根据所单击的按钮,以不同的方式验证用户的输入。 例如,即使大多数字段为空,用户也应该能够保存对象,但为了批准,某些字段是必需的

一种方法是将验证置于CanSave和CanApprove方法(按钮绑定到ViewModel中的ICommand)。这里的问题是按钮被禁用,但没有指示需要填充哪些字段才能启用特定的按钮


理想情况下,应始终启用所有按钮,并在单击按钮时执行验证。但如何从VM中将字段标记为无效

尝试在类上添加类似于
LastStateValidated
属性的内容,并将
IDataErrorInfo
验证基于该值

这意味着第一次加载表单时,无论对象的状态如何,显示的验证将仅为有效的验证


当您尝试执行命令时,状态会发生变化,这将使
IDataErrorInfo
以不同的方式进行验证,因此,根据用户尝试执行的最后一个操作,将显示不同的验证错误。

到目前为止,您是否有编写或尝试过的代码?。非常感谢您提供了简单而优雅的解决方案:)