0

我试图了解我最后一个问题的本质,并使描述更加清晰。

给定的是一个 WPF 表单,用于提交带有两个文本字段和一个“保存”按钮的新数据。这两个文本字段都是必填字段并绑定到 ViewModel 属性。Button 使用 Execute 和 CanExecute 方法绑定到“Execute”中继命令。CanExecute 返回 ViewModel 的 !HasErrors。ViewModel 实现 INotifyPropertyChanged 和 INotifyDataErrorInfo 接口。属性设置器仅运行此属性的验证。

目标是:

  • 最初禁用“保存”按钮。
  • 仅当两个文本字段均已成功验证且每次属性更改时都未验证整个 ViewModel 时才启用“保存”按钮。

对于第一个目标,我使用 isValidated bool 属性,该属性最初为假,并在第一次验证发生后立即变为真。然后在 CanExecute 方法中与 HasErros 一起检查此属性。有没有更优雅的方式?

我不知道如何实现第二个目标。对此有什么想法吗?

谢谢

4

1 回答 1

0

你的两个目标实际上只是一个目标。让我们先看看你的第二个目标:

• 仅当两个文本字段均已成功验证且没有在每次属性更改时验证整个 ViewModel 时才启用“保存”按钮。

最初,您的文本字段将为空,因此可能它们不会通过验证。因此,最初,根据您的第一个目标,您Save Button 将被禁用:

• 最初禁用“保存”按钮。

其次,在你的最后一个问题中(如果你要在这篇文章中提到它,你可能应该添加一个链接),你!HasErrosCanExecute处理程序中使用时遇到了一些问题。这一次,您确实需要一起验证所有属性以满足您的第二个要求......所以只需!HasErrosCanExecute处理程序中使用。

于 2014-01-13T10:19:10.783 回答