我的 viewModel 中有错误验证,因此当它的UserName
长度不是至少 2 个字符时,它会出现验证错误。
当我的应用程序启动时,该字段没有经过验证,被认为没有错误。只有当 setter 被调用时,它才会检查输入是否有效。在我的表格中,这会导致加载时TextBox
. 但是,一旦用户输入一个字符,UserName
setter 就会被调用,它会看到长度小于 2 个字符,因此会出现验证错误。
这就是它默认的工作方式,这就是我想要的。我不想从打开表单开始并在TextBox
.
现在,在这个表单上,我有一个绑定到 ICommand 的按钮。当论坛加载时,由于该UserName
字段在技术上不被认为有任何错误,因此启用了该按钮。但是,当用户输入一个字符时,它会变为禁用,如果他删除所有内容,它将保持禁用状态。
我希望我的表单加载没有任何错误,但要禁用该按钮。
现在,我的CanExecute()
方法是检查我在 ViewModel 中拥有的字段,该字段基本上检查errors
列表计数是否大于 0。如果是,则它有错误并因此返回 true。如果不是,则返回 false。
我有办法解决上述困境,但我不喜欢它。我有一张这样的支票。
return UserName.Length < 2 || errors.Count > 0
现在这看起来很好,但是如果我有更多的字段要检查,例如Address
and Port
,我也必须添加这些。所有这一切真正的作用是为 提供这个初始的 false CanExeute()
,它在所有其他时间都是无用的,因为它将是多余的。如果UserName.Length < 2
,当然errors.
数组中会有一些错误。
很好,如果创建 my ICommand
(在本例中是DelegateCommand
from Prism
),我可以将其初始化为 false 并因此禁用。