Mvvm Silverlight中的控件是否有简单验证的方法

Mvvm Silverlight中的控件是否有简单验证的方法,mvvm,silverlight-4.0,validation,Mvvm,Silverlight 4.0,Validation,我来自一个Delphi编程世界,我开始学习Silverlight、实体框架、RIA服务、MVVM和所有这些东西 我想知道是否有某种技术、控制、方法、模式或其他东西允许您在用户键入时在客户端进行一些简单的验证或现场验证。在Delphi环境中,控件(DB-Aware控件)具有这样做的能力,它们知道所显示的数据的类型,您可以配置最大长度,通常它们知道有关数据的一些信息,例如浮点类型不允许在其中包含多个点等等 我理解这是不同的,您必须在业务类、服务、模型和域中进行验证,这取决于您使用的是什么,也取决于您

我来自一个Delphi编程世界,我开始学习Silverlight、实体框架、RIA服务、MVVM和所有这些东西

我想知道是否有某种技术、控制、方法、模式或其他东西允许您在用户键入时在客户端进行一些简单的验证或现场验证。在Delphi环境中,控件(DB-Aware控件)具有这样做的能力,它们知道所显示的数据的类型,您可以配置最大长度,通常它们知道有关数据的一些信息,例如浮点类型不允许在其中包含多个点等等

我理解这是不同的,您必须在业务类、服务、模型和域中进行验证,这取决于您使用的是什么,也取决于您的数据库

你有什么想法和建议可以帮到你吗


对不起,我的英语不是我的主要语言。

Silverlight中的验证与绑定紧密相关,通常通过以下两种主要方式之一完成:

  • 在属性设置器中使用DataAnnotation生成的验证器进行客户端验证
  • 将实体提交到存储时完成服务器端验证
当验证失败时,客户端验证程序依赖于setter中抛出的异常。当验证程序失败时,服务器端验证将返回通知。这两个binidng选项是
validatesonceptions
(客户端)和
NotifyOnValidationError
(服务器端)

听起来你想要在键入时进行“实时”验证。最实际的应用是格式验证,例如电子邮件地址或社会保险号码。这通常是通过正则表达式验证器完成的

简短的故事是否定的,对于这种类型的验证,没有什么“现成的”,但它是可以做到的。使用DataAnnotation在属性级别应用验证:

可以使用RegularExpressionAttribute根据正则表达式验证文本属性。但是,在正常情况下,只有在更新后才会验证值,也就是说,只有在您将选项卡从正在验证的控件中移开时才会验证值。您可以使用
UpdateSourceTrigger=Explicit
绑定选项在键入时进行验证:

以下是Silverlight中数据验证的良好概述:


Silverlight中的验证与绑定密切相关,最常用的方法有两种:

  • 在属性设置器中使用DataAnnotation生成的验证器进行客户端验证
  • 将实体提交到存储时完成服务器端验证
当验证失败时,客户端验证程序依赖于setter中抛出的异常。当验证程序失败时,服务器端验证将返回通知。这两个binidng选项是
validatesonceptions
(客户端)和
NotifyOnValidationError
(服务器端)

听起来你想要在键入时进行“实时”验证。最实际的应用是格式验证,例如电子邮件地址或社会保险号码。这通常是通过正则表达式验证器完成的

简短的故事是否定的,对于这种类型的验证,没有什么“现成的”,但它是可以做到的。使用DataAnnotation在属性级别应用验证:

可以使用RegularExpressionAttribute根据正则表达式验证文本属性。但是,在正常情况下,只有在更新后才会验证值,也就是说,只有在您将选项卡从正在验证的控件中移开时才会验证值。您可以使用
UpdateSourceTrigger=Explicit
绑定选项在键入时进行验证:

以下是Silverlight中数据验证的良好概述:


谢谢Dave,所以不是实时验证:(只有RegEx,哇,但是如果是一件简单的事情,只是告诉文本框外观不允许输入超过20个字符长度的文本,有那么难吗。Ramony你也可以做长度验证。查看我答案中的属性列表,了解内置验证程序的信息。你也可以派生自己的。任何“格式”您希望在客户端实时执行的验证是可以完成的。Silverlight不像ASP.NET或Delphi那样简单,但这是可能的。您的答案不是我想要的答案,但肯定是如何在Silverlight中执行验证的答案。谢谢Dave,所以不是实时验证:(只有RegEx,哇,但是如果是一件简单的事情,只是告诉文本框外观不允许输入超过20个字符长度的文本,有那么难吗。Ramony你也可以做长度验证。查看我答案中的属性列表,了解内置验证程序的信息。你也可以派生自己的。任何“格式”您希望在客户端实时执行的验证是可以完成的。在Silverlight中,它不像在ASP.NET或Delphi中那样简单,但这是可能的。您的答案不是我想要的答案,但肯定是如何在Silverlight中执行验证的答案。