zoukankan      html  css  js  c++  java
  • WPF中Binding的“事务”处理

    在我的上一篇《WPF 中的数据验证》中,我编写了数据的绑定验证的基类实现,很巧的事情时,在刚发布的MSDN Magazine  June 2010 Issue 中有一篇《Enforcing Complex Business Data Rules with WPF》文章详细的介绍了WPF的数据验证。

    不过很遗憾的是,上面的文章没有提及如何在Binding中使用“事务” 。

    我们其实有很多这样的情况,我们一个界面有很多的输入源。比如下图中所示:

     

     如果我们在更新一个用户的资料,当我们输入用户的姓名符合姓名的验证规则时,内存中的Persion对象的Name属性已经被同步的更新了,不管你的年龄是否验证正确,如果你在UI上取消了这个更新窗口(比如关闭当前的编辑面板)但是这个对象的Name属性还是被真实的改变了。

    下边我们就用这个方法来解决这个问题,要达到的效果是,如果姓名和年龄有一个不相符就不能更新他们中的任何一个。

    如下图所示:

     

     我们用BindingGroup把其中的所需要同时验证的对象属性组合到一起,如果全部验证Ok才让UI上确定按钮可用。

     具体办法如下:

     Binding的UpdateSourceTrigger要用手动模式(Explicit),如果UI上的TextBox发生变化,就直接通过BindingGroup的ValidateWithoutUpdate方法检查即可。如果检查通过启用UI上的保持按钮,在通过遍历BindingGroup中的BindingExpressions属性内的每一个BindingExpression,然后使用其UpdateSource方法提交。

     从效果上看这样达到了一个多个数据同时验证并提交的目的,即类似于使用“事务”进行了一个处理。

  • 相关阅读:
    python面试大全
    python面试2
    python求职之路
    python面试题目
    关于栈的输入顺序和输出顺序
    表单提交中get和post方式的区别
    DOS命令行下mysql 基本命令
    跨站请求伪造CSRF
    Windows上python的virtualenv 安装及使用
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/cuiweifu/p/wpf_binding_transaction.html
Copyright © 2011-2022 走看看