我正在使用Prism开发SL3应用程序。我需要支持验证(字段级别(在绑定属性的setter上)和save(表单级别)之前),包括按下保存按钮时显示的验证摘要。
但我可以找到谷歌搜索的样本是SL3,后面有很多代码(非常不冷静和非Prismy),或WPF相关。
有没有人知道我可以查看一些实际验证的参考申请?
干杯, 阿里
答案 0 :(得分:3)
目前微软没有,但我明天会将这一个传递给PRISM团队,看看我们是否可以在下一轮PRISM中获得一个基本的表单验证示例。
话虽如此,你可以为每个Form提供一个验证器,它基本上验证每个字段(语义和/或语法验证),并且都应该通过,将返回一个真/假状态。
我通常这样做的方法是将“CanSave”方法附加到我的命令,即:
SaveOrderCommand = new DelegateCommand<object>(this.Save, this.CanSave);
private bool CanSave(object arg)
{
return this.errors.Count == 0 && this.Quantity > 0;
}
然后在 this.CanSave 中,我将基本验证放在此代码库中,或者根据上下文调用一堆其他验证器 - 有些将在所有模块中共享(即IsEmailValid将是我作为单身人员在我的基础架构模块中放置的一个Validator,并传入我的字符串,因此它将为true / false)。一旦它们全部通过,确保CanSave返回true。如果它们失败,CanSave将返回False。
现在,如果他们失败了,你想要向用户触发一个友好的提示,告知用户失败了,你可以在这里使用多种技术。我通常会在验证时将所述控件标记为“失败”..(我自己写下了自己的想法,所以你可以使用哪些工具包 - http://www.codeplex.com/SilverlightValidator是一个不错的工具包。)
现在,我通常希望通过不仅突出显示所述控件(红色框,图标等)来对已对其进行验证的表单做更多工作,还会向用户详细说明所需的内容 - 因此自定义方法是我选择的解决方案。
在一天结束时,你将不得不做一些繁重的工作以验证你的特定表格 - 但是在他们有意义的地方寻找重新使用验证器的方法(电子邮件,SSN等很容易重复使用)。
HTH?
Scott Barnes - Rich Platforms产品经理 - Microsoft。