如何在Prism 6.3 WPF应用程序中验证用户输入?

时间:2018-03-20 06:17:32

标签: c# wpf mvvm prism

我正在尝试使用c#编写一个WPF应用程序,并在Prism 6.3 library的帮助下编写。我通过@BrianLagunas观看了pluralsight.com关于Prism的所有可用教程。但它们并没有显示如何进行数据验证。

我需要在将数据提交到数据库之前添加输入验证。

如何添加验证规则,如何在将数据保存到数据库之前检查表单是否有效?

2 个答案:

答案 0 :(得分:0)

您正在寻找 MvvmValidation 。 我认为图书馆满足您的需求。 去尝试一下,它有一些例子。

答案 1 :(得分:0)

简单的wpf绑定验证可能适用于此。

从视图的xaml中获取此代码:

<TextBox>
    <TextBox.Text>
        <Binding Path="Data">
            <Binding.ValidationRules>
                <myNamespace:IntegerValidationRule/>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

和这条规则

public class IntegerValidationRule : ValidationRule
{
    public override ValidationResult Validate( object value, CultureInfo cultureInfo )
    {
        var stringData = value as string;
        if( stringData == null )
            return new ValidationResult( false, "not a string" );
        int dummy;
        if( !int.TryParse( stringData, out dummy ) )
            return new ValidationResult( false, "not an integer" );
        return ValidationResult.ValidResult;
    }
}

如果输入的内容不是整数,你会在文本框周围找到漂亮的红色边框。而且,更重要的是,不会调用视图模型的Data属性设置器。

如果您需要复杂验证(即没有单个属性值有效,但只有不同属性值的组合),那么您的视图模型需要实现INotifyDataErrorInfo。您基本上在任何受影响的属性的setter中进行验证,最后提升ErrorsChanged ...