【问题标题】:Call Methods from a list and store results从列表中调用方法并存储结果
【发布时间】:2017-04-12 19:15:02
【问题描述】:

我想创建自己的数据验证系统,比如说

List<ValidationRule> list = new List<ValidationRule>();
list.Add(new ValidationRule(sometext, "Method regexTextValidation"));
list.Add(new ValidationRule(phonenumeber, "Method regexPhoneValidation"));
list.Add(new ValidationRule(somedate, "Method regexDateValidation"));

我想存储每个方法的结果并循环遍历它们,以查看是否有问题,如果是,则对相关字段进行处理。

编辑:

sometext 是一个字符串,而 regexTextValidation 是一个方法,我正在尝试一些东西,我想我会使用字典 Dictionary&lt;int, Tuple&lt;string, bool&gt;&gt; _DicValidationRules; 我会这样称呼它_DicValidationRules.Add(1, new Tuple&lt;string, bool&gt;("some text", regexTextValidation("some text")));

【问题讨论】:

    标签: c# regex wpf visual-studio


    【解决方案1】:

    这不是您在 WPF 中使用验证规则的方式。您通常在 XAML 中引用它们并为绑定定义它们。这是一个例子......

                            <DataGridTextColumn Header="Value" EditingElementStyle="{StaticResource errorStyle}">
                                <DataGridTextColumn.Binding>
                                    <Binding Path="Value" NotifyOnValidationError="False" >
                                        <Binding.ValidationRules>
                                            <local:NumberValidationRule ValidationStep="RawProposedValue"/>
                                        </Binding.ValidationRules>
                                    </Binding>
                                </DataGridTextColumn.Binding>
                            </DataGridTextColumn>
    

    此特定验证规则验证用户是否在文本字段中键入了大于 0 的数字。您可以有多个验证规则,并且它们都必须返回真实的验证结果或指示错误。

    public class NumberValidationRule : ValidationRule
    {
        public override ValidationResult Validate(object value, CultureInfo cultureInfo)
        {
            double v = 0.0;
            if(double.TryParse(value as string, out v))
            {
                if(v <= 0.0)
                {
                    return new ValidationResult(false, "number must be greater than 0");
                }
            }
            else
            {
                return new ValidationResult(false, "entered value is not a number");
            }
            return new ValidationResult(true, null);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      • 2017-09-11
      • 1970-01-01
      相关资源
      最近更新 更多