我正在尝试使用c#编写一个WPF应用程序,并在Prism 6.3 library的帮助下编写。我通过@BrianLagunas观看了pluralsight.com关于Prism的所有可用教程。但它们并没有显示如何进行数据验证。
我需要在将数据提交到数据库之前添加输入验证。
如何添加验证规则,如何在将数据保存到数据库之前检查表单是否有效?
答案 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
...