3

在我的应用程序中,我使用“validatesonnotifydataerrors”和“DataAnnotations”,以便用户在他们正在编辑的字段为空或数据错误等时收到警告。我遇到的问题是,当我的视图显示时,所有的文本框正在显示警告,因为它们是空的。我想要做的只是在用户开始在该字段中输入不正确的数据或者如果他们随后删除数据并且该字段变为空时显示警告。

这是我的一个文本框的 xaml:

    <TextBox Text="{Binding Path=AttributeName, UpdateSourceTrigger=PropertyChanged, ValidatesOnNotifyDataErrors=true}" />

这是支持属性:

    private string _attributeName;
    [StringLength(128)]
    [Required(ErrorMessage = "Field cannot be blank")]
    public string AttributeName
    {
        get { return _attributeName; }
        set
        {
            _attributeName = value;
            IsDirty = true;
            OnPropertyChanged("AttributeName");
        }
    }

我想用这个框架做什么?

4

1 回答 1

2

如果您希望文本框不立即显示验证,请删除;

[Required(ErrorMessage = "Field cannot be blank")]

然后包含一个正则表达式,如下所示;

[RegularExpression(@"^[a-zA-Z''-'\s]{1,128}$", ErrorMessage = "AttributeName must contain no more then 128 characters and contain no digits.")]
public string AttributeName
{
    get { return _attributeName; }
    set
    {
        _attributeName = value;
        IsDirty = true;
        OnPropertyChanged("AttributeName");
    }
}

然后,在正则表达式中,您可以添加或删除某些方面,以便文本框不允许数字、符号等。

如您所见,您可以添加要包含的字符串范围,就像这样{1,128}(从 1 个字母到 128 个字母,之后它将在文本框中显示为红色),因此理论上,您不需要包含[StringLength(128)]任何一个。

查看此链接以获取有关数据注释/属性验证的更多信息。也看看这个链接

希望这可以帮助 :)。

于 2013-05-16T10:12:04.723 回答