好的,这应该是一件非常简单的事情,我要么错过了一些东西,要么错了。
事实:
Silverlight 4,使用Toolkit并使用DataForms / DataFields,但不使用验证摘要。
使用模板化数据形式,简单的新/编辑用户表单,包括常用字段,如用户名,名字等,以及密码和确认密码。
我想验证,如果他们正在编辑现有用户,并且密码字段为空,请让它通过。否则,请确保密码相同。 (这已经在我的模型上使用了类级自定义验证器。)
如果验证在#3中失败,则通过在密码字段中放置常用线索来提醒用户。 (红色边框,如果单击该字段则显示消息)
我现在可以通过#3完成所有事情。但是如果发生错误,则错误显示为表单错误,而不是字段错误(这是有道理的,因为验证是在类上,而不是属性)。我无法找到标记我的字段以显示错误的方法。由于我没有使用验证摘要(出于设计原因),因此错误永远不会出现在用户身上。
有没有其他人这样做过,或者他们是否可以向我发送一个数据表单示例,其中包含不使用验证摘要的密码字段,以便我看到他们是如何解决的?
我看到的两个当前选项是自己手动标记数据字段。或者,我将构建自己的显示完整形式错误的方法,不会像验证摘要那样重复错误。 (IE,我需要一个仅显示表单错误的验证摘要 - 而不是字段错误。)
由于
答案 0 :(得分:3)
好的,我解决了这个问题。以下是一些提示:
在我的xaml的.cs代码中,我通过在我的对象上调用TryValidate来验证我的对象。如果您不使用内置的DataForm命令按钮,这不是一个好主意。如果使用自己的自定义按钮,请务必调用DataForm.ValidateItem()方法以确保所有错误都正确输出到ValidationSummary。 (在我的情况下,由于我没有表格进行验证,因此没有任何内容进入验证测试。)
您可以告诉ValidationSummary仅显示对象级错误。 (属性错误仍会显示,但仅在字段上显示。)要执行此操作,请执行以下操作:
myDataform.ValidationSummary.Filter = ValidationSummaryFilters.ObjectErrors;
有关详细信息,请参阅ValidationSummaryFilters。
这对我有用。我的对象验证将显示在验证摘要中,并且仅在属性上显示属性错误。现在我只需要按照我希望的方式设置验证摘要的样式,使其更适合我的设计。