添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

表单验证是MVVM体系中的重要一块。而绑定除了推动 Model-View-ViewModel (MVVM) 模式松散耦合 逻辑、数据 和 UI定义 的关系之外,还为业务数据验证方案提供强大而灵活的支持。WPF 中的数据绑定机制包括多个选项,可用于在创建可编辑视图时校验输入数据的有效性。
常见的表单验证机制有如下几种
Exception验证:通过在某个 Binding 对象上设置 ValidatesOnExceptions 属性,如果源对象属
性设置已修改的值的过程中引发异常,则抛出错误并为该 Binding 设置验证错误。
ValidationRule验证:Binding 类具有一个用于提供 ValidationRule 派生类实例的集合的属性。这些 ValidationRules 需要覆盖某个 Validate 方法,该方法由 Binding 在每次绑定 控件中的数据发生更改时进行调用。如果 Validate 方法返回无效的 ValidationResult 对象,则将为该 Binding 设置验证错误。
IDataErrorInfo验证:通过在绑定数据源对象上实现 IDataErrorInfo 接口并在 Binding 对象上设置ValidatesOnDataErrors 属性,Binding 将调用从绑定数据源对象公开的 IDataErrorInfo API。 如果从这些属性调用返回非 null 或非空字符串,则将为该 Binding 设置验证错误。
验证交互的关系模式如图:

我们在使用 WPF 中的数据绑定来呈现业务数据时,通常会使用 Binding 对象在目标控件的单个属
性与数据源对象属性之间提供数据管道。
如果要使得绑定验证有效,首先需要进行 TwoWay 数据绑定。这表明,除了从源属性流向目标属性以
进行显示的数据之外,编辑过的数据也会从目标流向源。
这就是伟大的双向数据绑定的精髓,所以在MVVM中做数据校验,会容易的多。
当 TwoWay 数据绑定中输入或修改数据时,将启动以下工作流:

绑定目标向绑定源发送数据更新的请求,而绑定源则对数据进行验证,并根据不同的验证机制进行反
馈。
1、Exception 验证:
正如说明中描述的那样,在具有绑定关系的源字段模型上做验证异常的引发并抛出,在View中的
Xaml对象上设置 ExceptionValidationRule 属性,响应捕获异常并显示。
2、ValidationRule 验证:通过继承ValidationRule 抽象类,并重写他的Validate方法来扩展编写我们需要的验证类。该验证类可以直接使用在我们需要验证的属性。
说明:相对来说,这种方式是比较不错的,独立性、复用性都很好,从松散耦合角度来说也是比较恰当的。可以预先写好一系列的验证规则类,视图编码人员可以根据需求直接使用这些验证规 则服务端无需额外的处理。 但是仍然有缺点,扩展性差,如果需要个性化反馈消息也需要额外扩展。不符合日益丰富的前端验证需求。
3、IDataErrorInfo 验证:
3.1、在绑定数据源对象上实现 IDataErrorInfo 接口
3.2、在 Binding 对象上设置 ValidatesOnDataErrors 属性 Binding 将调用从绑定数据源对象公开的 IDataErrorInfo API。如果从这些属性调用返回非 null 或非空字符串,则将为该 Binding 设置验证错误。
利用 IDataErrorInfo 的好处是它可用于轻松地处理交叉耦合属性。但也具有一个很大的弊端:
索引器的实现通常会导致较大的 switch-case 语句(对象中的每个属性名称都对应于一种情况),
必须基于字符串进行切换和匹配,并返回指示错误的字符串。而且,在对象上设置属性值之前,不会调用 IDataErrorInfo 的实现。为了避免出现大量的 switch-case,并且将校验逻辑进行分离提高代码复用,将验证规则和验证信息独立化于于每个模型对象中, 使用DataAnnotations 无疑是最好的的方案 。

表单验证是MVVM体系中的重要一块。而绑定除了推动 Model-View-ViewModel (MVVM) 模式松散耦合 逻辑、数据 和 UI定义 的关系之外,还为业务数据验证方案提供强大而灵活的支持。WPF 中的数据绑定机制包括多个选项,可用于在创建可编辑视图时校验输入数据的有效性。常见的表单验证机制有如下几种Exception验证:通过在某个 Binding 对象上设置 ValidatesOnExceptions 属性,如果源对象属性设置已修改的值的过程中引发异常,则抛出错误并为该 Binding
表单验证 MVVM 体系中的重要一块。而 绑定 除了推动Model-View-ViewModel ( MVVM ) 模式松散耦合逻辑、数据 和 UI定义 的关系之外,还为业务数据验证方案提供强大而灵活的支持。 WPF 中的数据 绑定 机制包括多个选项,可用于在创建可编辑视图时校验输入数据的有效性。 常见的 表单验证 机制有如下几种: Exception 验证 ...
1、Messager交互结构和消息类型 衔接上篇,Messeger是信使的意思,顾名思义,他的目是用于View和ViewModel 以及 ViewModel和ViewModel 之间的消息通知和接收。 Messenger类用于 应用 程序的通信,接受者只能接受注册的消息类型,另外目标类型可以被指定,用Send<TMessage, TTarget>(TMessage message)实现...
表单验证 MVVM 体系中的重要一块。而 绑定 除了推动Model-View-ViewModel ( MVVM ) 模式松散耦合逻辑、数据 和 UI定义 的关系之外,还为业务数据验证方案提供强大而灵活的支持。 WPF 中的数据 绑定 机制包括多个选项,可用于在创建可编辑视图时校验输入数据的有效性。 常见的 表单验证 机制有如下几种: Exception 验证 通过...
MVVM Light 框架中,事件是WPF 应用 程序中UI与后台代码进行交互的最主要方式,与传统方式不同, mvvm 中主要通过 绑定 到命令来进行事件的处理, 因此要了解 mvvm 中处理事件的方式,就必须先熟悉命令的工作原理。 RelayCommand命令: WPF命令是通过实现 ICommand 接口创建的。 ICommand 公开了两个方法(Execute 及 CanExecute)和...
已经很久没有写系列文章了,上一次是2012年写的HTLM5系列,想想我们应该是较早一批使用HTML5做项目的人。 相比我当时动不动100+的粉丝增长和两天3000+的阅读量, MVVM Light 只能算小众技术了,也是因为她小众,才更具意义,不希望有人跟我一样网上找案例找半天。 写的初衷也是希望同项目组的同事能更好的融入和接收已有项目。其中两篇《DispatchHelper在多线程和调度中...
MVVM Light 框架中,事件是WPF 应用 程序中UI与后台代码进行交互的最主要方式,与传统方式不同, mvvm 中主要通过 绑定 到命令来进行事件的处理,因此要了解 mvvm 中处理事件的方式,就必须先熟悉命令的工作原理。 RelayCommand命令: WPF命令是通过实现 ICommand 接口创建的。 ICommand 公开了两个方法(Execute 及 CanExecute)和一个事件(CanExecuteChanged)。 Execute方法 :执行与命令关联的操作 CanExecute方法: 确定是否可
本文是翻译大牛Josh Smith的文章,WPF Apps With The Model-View-ViewModel Design Pattern,译者水平有限,如有什么问题请看原文,或者与译者讨论(非常乐意与你讨论)。 本文讨论的内容: WPF与设计模式 MVP模式 对WPF来说为什么 MVVM 是更好的选择 用 MVVM 构建WPF程序 本文涉及的技术:
一、 MVVM MVVM Light 介绍 (1) MVVM 是Model-View-ViewModel的简写。类似于目前比较流行的MVC、MVP设计模式,主要目的是 为了分离视图(View)和模型(Model)的耦合。 它是一种极度优秀的设计模式,但并非框架级别的东西,由MVP(Model-View-Presenter)模式与 WPF结合的 应用 方式时发展演变过来的一种新型架构。 立足于原有MVP框架并且把WPF的新特性糅合进去,以应对PC端开发日益复杂的需求变化。 (2) MVVM 模式和MVC模式一样,主要目的是
MVVM Light 是一个开源的 MVVM (Model-View-ViewModel) 框架,用于开发 Windows 平台的 应用 程序。它的主要优点在于简洁易用、轻量级,支持 WPF、Silver light 、Windows Phone、Windows 8/8.1、Windows 10 UWP 等平台。 下面是一个简单的 MVVM Light 使用教程: 1. 首先,安装 MVVM Light 框架。可以通过 NuGet 包管理器安装,命令如下: Install-Package Mvvm Light 2. 在项目中添加一个 ViewModel 类。这个类会 绑定 到 View 上。 3. 编写 View 的 XAML 代码。在根元素上添加 DataContext 属性 绑定 到 ViewModel。 4. 编写 ViewModel 类中的逻辑代码。这些代码会更新 View 的状态。 5. 在 View 的 XAML 代码中添加 绑定 。例如,将一个文本框的 Text 属性 绑定 到 ViewModel 中的一个属性上。 6. 在 ViewModel 中使用命令来处理 View 上的用户交互。 7. 按照需要使用其他 MVVM Light 的功能,例如消息传递、导航、本地化等。 最后,我需要提醒你 MVVM 是一种模式,不同的框架可能有不同的实现,每种框架都有它的优缺点,需要根据自己的需求来选择合适的框架. CSDN-Ada助手: 非常感谢博主的精彩分享,这篇名为“异步方法关键字”的博客写得非常详细、易懂,让我对异步方法的理解更加深刻。同时也感谢您抽出时间去写这篇博客,让我们能够更方便地学习和掌握这一知识点。期待博主能够再次分享更多有价值的内容,让我们获益更多。再次感谢! 为了方便博主创作,提高生产力,CSDN上线了AI写作助手功能,就在创作编辑器右侧哦~(https://mp.csdn.net/edit?utm_source=blog_comment_recall )诚邀您来加入测评,到此(https://activity.csdn.net/creatActivity?id=10450&utm_source=blog_comment_recall)发布测评文章即可获得「话题勋章」,同时还有机会拿定制奖牌。 Java的异常处理机制 CHQIUU: 支持大佬,原创不易 Java的运算符 water___Wang: 写的挺好的,加油~ Java的介绍和eclipse基本使用 water___Wang: