1

好的,这应该是一件非常简单的事情,我要么错过了什么,要么做错了。

事实:

  1. Silverlight 4,使用工具包并使用 DataForms / DataFields,但不使用验证摘要。

  2. 使用模板化数据表单,简单的新建/编辑用户表单,其中包含用户名、名字等常用字段,以及密码和确认密码。

  3. 我想验证一下,如果他们正在编辑现有用户,并且密码字段为空白,则让它通过。否则,请确保密码相同。(这已经在我的模型上使用了类级别的自定义验证器。)

  4. 如果在 #3 中验证失败,则通过将常用线索放在密码字段上来提醒用户。(红色边框,单击该字段时会显示消息)

我现在可以通过#3 做所有事情。但是如果发生错误,则错误将显示为表单错误,而不是字段错误(这是有道理的,因为验证是在类上,而不是在属性上)。我找不到标记我的字段以显示错误的方法。由于我没有使用验证摘要(出于设计原因),因此错误永远不会向用户显示。

有没有其他人这样做过,或者他们可以给我发送一个数据表单示例,其中包含不使用验证摘要的密码字段,以便我可以看到他们是如何解决的?

我看到的两个当前选项是自己手动标记数据字段。或者,我将构建我自己的显示完整表单错误的方法,它不会像验证摘要那样重复错误。(即,我需要一个仅显示表单错误而不是字段错误的验证摘要。)

谢谢

4

1 回答 1

3

好的,我解决了这个问题。以下是一些提示:

  1. 在我的 xaml 的 .cs 代码中,我通过在我的对象上调用 TryValidate 来验证我的对象。如果您不使用内置的 DataForm 命令按钮,这不是一个好主意。如果使用您自己的自定义按钮,请务必调用 DataForm.ValidateItem() 方法以确保所有错误都正确输出到 ValidationSummary。(在我的情况下,由于我没有表单进行验证,因此没有任何内容进入验证摘要。)

  2. 您可以告诉 ValidationSummary 仅显示对象级别的错误。(属性错误仍然出现,但只出现在现场。)要做到这一点,像这样分配:

    myDataform.ValidationSummary.Filter = ValidationSummaryFilters.ObjectErrors;

有关更多信息,请参阅 ValidationSummaryFilters。

这对我有用。我的对象验证将显示在验证摘要中,而属性错误仅显示在属性上。现在我只需要按照我想让它更好地为我的设计工作的方式来设置验证摘要的样式。

于 2010-06-06T17:20:57.573 回答