• wpf devexpress实现输入验证使用验证规则


    打开此项目

    目标是一个registration form行为像google registration form。打开Google registration form 研究它的行为。当form是第一次显示,它的“Register”按钮应该启动;编辑器没有提示任何输入错误。输入First Name编辑器字段,清理输入和离开编辑器应该显示的First Name编辑器在错误状态。

    在此教程,你可以实现本行为。

    最好的审核实现行为是绑定验证规则-一个标准审核被WPF平台提供。在之前继续,审核如下MSDN文档主题:如何实现绑定验证。

    可以创建一个验证规则提示一个输入错误对于每一个空编辑器字段添加普通文件夹在项目和一个新文件,ValidationRule.cs,定义如下类

    1. public class RequiredValidationRule : ValidationRule {
    2. public static string GetErrorMessage(string fieldName, object fieldValue, object nullValue = null) {
    3. string errorMessage = string.Empty;
    4. if(nullValue != null && nullValue.Equals(fieldValue))
    5. errorMessage = string.Format("You cannot leave the {0} field empty.", fieldName);
    6. if(fieldValue == null || string.IsNullOrEmpty(fieldValue.ToString()))
    7. errorMessage = string.Format("You cannot leave the {0} field empty.", fieldName);
    8. return errorMessage;
    9. }
    10. public string FieldName { get; set; }
    11. public override ValidationResult Validate(object value, CultureInfo cultureInfo) {
    12. string error = GetErrorMessage(FieldName, value);
    13. if(!string.IsNullOrEmpty(error))
    14. return new ValidationResult(false, error);
    15. return ValidationResult.ValidResult;
    16. }
    17. }

    RequiredValidationRule类检测输入值从继承Validate 方法。对于null或者空编辑值,此方法返回一个审核错误消息。

    确定使用验证规则,替换RequiredValidationRule实例在Binding.ValidationRules集合在如下。

    1. <UserControl xmlns:Common="clr-namespace:RegistrationForm.Common" ... >
    2. ...
    3. <dxe:TextEdit NullText="FIRST">
    4. <dxe:TextEdit.EditValue>
    5. <Binding Path="FirstName" UpdateSourceTrigger="PropertyChanged" Mode="TwoWay">
    6. <Binding.ValidationRules>
    7. <Helpers:RequiredValidationRule FieldName="First Name"/>
    8. Binding.ValidationRules>
    9. Binding>
    10. dxe:TextEdit.EditValue>
    11. dxe:TextEdit>
    12. ...
    13. UserControl>

    Binding.UpdateSourceTrigger属性设置PropertyChanged - 默认值LostFocus。在LostFocus值之上,验证进程只有当结束时调用-用户离开编辑器。

    在EditValue属性可用在任何DXEditors说明绑定机制,考虑如下简单的绑定:EditValue="{Binding FristName,Mode=TwoWay}".

    EditValue 是目标属性当绑定应用。对于必须,目标属性总是DependencyProperty(依赖属性)

    FirstName属性是源属性。绑定目标属性到源属性。源可以是一个DenpendencyProperty。一个恒定属性或属性触发INotifyProertyChanged.PropertyChanged事件当新值设置。此源属性无论如何不能是字段-必要属性。

    绑定可以使用双向绑定模式同样传递输入数据在目标,到密封的潜在源数据。双向绑定行为,通过默认当束缚控件丢失焦点更新源属性。此刷新行为可以被UpdateSourceTrigger指定。对于实例,设置UpdateSourceTrigger参数到PropertyChanged,更新源属性作为目标属性刷新。参考此信息:Binding.UpdateSourceTrigger

    此时,将您的注意力转向 DXEditors 如何修改 BaseEdit.EditValue 属性。

  • 相关阅读:
    YApi、Swagger
    分布式与微服务区别?
    微信小程序开发11 数据预取:合理缓存提高用户体验
    记某信漏洞复现
    Android中级——ListView和RecycleView解析
    一周净赚一套房,“羊了个羊”爆火的产品逻辑可复制吗?
    Educational Codeforces Round 138 (Rated for Div. 2)
    风电光伏混合储能功率小波包分解、平抑前后波动性分析、容量配置、频谱分析、并网功率波动分析(Matlab代码实现)
    基于springboot实现考研资讯网站管理系统项目【项目源码+论文说明】
    UbuntuNAT内网穿透实现远程访问
  • 原文地址:https://blog.csdn.net/loongsking/article/details/134544642