WPF绑定: 使用DataAnnotations进行验证规则

26 浏览
0 Comments

WPF绑定: 使用DataAnnotations进行验证规则

我已经阅读了很多有关WPF验证和DataAnnotations的博客文章。我想知道是否有一种简洁的方法可以将DataAnnotations作为我的实体的ValidationRules使用。所以,不是像这样使用(http://msdn.microsoft.com/en-us/library/system.windows.data.binding.validationrules.aspx):

在这种情况下,您必须拥有以下内容:

public class AgeRangeRule : ValidationRule

{...}

我希望WPF绑定能够查看Age属性并查找DataAnnotation,就像这样:

[Range(1, 120)]

public int Age

{

get { return _age; }

set

{

_age = value;

RaisePropertyChanged<...>(x => x.Age);

}

}

有什么想法吗?

0
0 Comments

WPF绑定:使用DataAnnotations进行验证规则的原因和解决方法

在WPF中,我们经常需要对用户输入的数据进行验证。一种常见的方法是使用DataAnnotations,它允许我们在属性上应用验证规则。然而,有时我们希望在验证规则失败时收集错误信息并在界面上显示出来。本文将介绍一个使用DataAnnotations进行验证规则并收集错误信息的解决方法。

问题的出现原因:

问题的解决方法:

首先,我们需要创建一个IDataErrorInfo接口的实现类。在这个类中,我们可以使用DataAnnotations来定义属性的验证规则。例如,我们可以使用StringLength属性来限制Name属性的长度,并指定错误消息。然后,我们可以在这个类中实现索引器,根据属性名调用ValidateProperty方法来获取验证错误信息。

接下来,我们需要在XAML中使用ValidatesOnDataErrors属性来启用数据错误的验证。这样,当属性的值发生变化时,WPF将自动调用IDataErrorInfo的索引器来获取错误信息,并在界面上显示出来。

通过使用DataAnnotations和IDataErrorInfo接口,我们可以很方便地实现对用户输入数据的验证和错误信息的收集。这种方法可以让我们更轻松地进行数据验证,提高用户体验。

参考文献:

- [WPF Commanding and Data Annotations Validation](http://babaandthepigman.wordpress.com/2010/02/14/wpf-commanding-and-data-annotations-validation/)

- [IDataErrorInfo Interface](http://msdn.microsoft.com/en-us/library/dd901590%28v=vs.95%29.aspx)

- [Using IDataErrorInfo for Validation in MVVM with Silverlight and WPF](http://www.arrangeactassert.com/using-idataerrorinfo-for-validation-in-mvvm-with-silverlight-and-wpf/)

0
0 Comments

WPF Binding: 使用DataAnnotations进行ValidationRules

在你的模型中,你可以实现IDataErrorInfo并做如下操作...

string IDataErrorInfo.this[string columnName]
{
    get
    {
        if (columnName == "Age")
        {
            if (Age < 0 ||
                Age > 120)
            {
                return "You must be between 1 - 120";
            }
        }
        return null;
    }
}

你还需要通知绑定目标有关新定义行为的信息。


编辑:

如果你只想使用Data Annotations,你可以参考这篇博客文章,其中详细介绍了如何完成这个任务。

更新:

上述链接的历史记录。

它可以正常工作,但是它使用了DataAnnotations。这非常棒。

你可以在SL中使用这个方法,但是在WPF中默认情况下不能做到;不过它是可以实现的...更新的答案...

所以你的意思是,检查DataAnnotation的机制只存在于SilverLight中而不是WPF中?我尝试了博客文章中的示例。它可以工作,但是你必须手动检查每个属性中的DataAnnotation。我在寻找WPF框架是否能够像SilverLight一样自动检查我的属性上的DataAnnotations。

是的,内置的行为是SL而不是WPF。

教程的链接已经失效。

使用Web Archive更新链接。

0
0 Comments

问题的原因是作者想在WPF中使用数据绑定进行验证,但是他之前在WinForms中使用的验证方法在WPF中无法直接使用。他之前在WinForms中使用的方法是通过使用Validation Application Block from the Entlib以及实现IDataErrorInfo接口来实现验证。作者认为这种方法更加高级和可维护,因为验证逻辑是放在对象上而不是接口实现中。作者还提到在IDataErrorInfo接口中调用Validation.Validate(this)进行验证,并且需要调用[SelfValidation]进行属性组合的验证。

解决方法是作者建议在WPF中使用DataAnnotations进行验证。使用DataAnnotations可以通过在属性上添加特性来定义验证规则。作者认为这种方法更加简单和直观,而且可以与其他框架(如MVVM框架)很好地集成。

问题的原因是作者想在WPF中进行数据绑定的验证,但之前在WinForms中使用的验证方法在WPF中无法直接使用。解决方法是使用DataAnnotations进行验证,通过在属性上添加特性来定义验证规则。这种方法更加简单、直观,并且可以与其他框架很好地集成。

0