gpt4 book ai didi

silverlight - 如何从 Silverlight 4 中的 DataForm.Validating() 事件中删除一个或多个字段?

转载 作者:行者123 更新时间:2023-12-01 04:10:19 24 4
gpt4 key购买 nike

我有一个绑定(bind)到一个对象的数据表单,该对象的属性用 System.ObjectModel.DataAnnotation 装饰。验证的属性。

我面临的问题是这个类的某些属性只是有条件地需要,不需要验证。例如,当应用的管理员决定编辑用户时,
他或她可以输入密码/密码确认/密码问题/密码答案。或者他/她可能完全跳过这些属性。

因此,如果管理员决定输入这 4 个字段中的任何一个,它们都必须存在,并且必须应用所有这些字段的验证规则。但是,如果管理员只想更改 FirstName、LastName、Email 或任何其他任意属性 - 不需要验证与密码相关的字段。

有没有办法从验证过程中“排除”它们?

这是我使用的对象的示例:

public class RegistrationData
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string PasswordConfirm { get; set; }
public string PasswordQuestion { get; set; }
public string PasswordAnswer { get; set; }
}

我在 Xaml 中有一个名为 registrationForm 的 DataForm,我得到的错误在这段代码中:
private void RegistrationButton_Click(object sender, RoutedEventArgs e)
{
if( this.registerForm.ValidateItem() )
{
//Does not pass validaton if the password properties are not filled in.
}
}

关于如何解决它的任何想法?

我正在考虑使用两个 DataForms ......并将用户对象一分为二,但这涉及很多代码......

最佳答案

我建议在 RegistrationData 对象上使用 INotifyDataError 接口(interface)。

    public string LabelWrapper
{
get
{
return this.Label;
}
set
{
ValidateRequired("LabelWrapper", value, "Label required");
ValidateRegularExpression("LabelWrapper", value, @"^[\w-_ ]+$", "Characters allowed (a-z,A-Z,0-9,-,_, )");
this.Label = value;
this.RaisePropertyChanged("LabelWrapper");
}
}

public string DependentLabelWrapper
{
get
{
return this.DependentLabel;
}
set
{
if(LabelWrapper != null){
ValidateRequired("DependentLabelWrapper", value, "Label required");
ValidateRegularExpression("LabelWrapper", value, @"^[\w-_ ]+$", "Characters allowed (a-z,A-Z,0-9,-,_, )");
}
this.DependentLabel = value;
this.RaisePropertyChanged("DependentLabelWrapper");
}
}

我建议你看看这个链接 http://blogs.msdn.com/b/nagasatish/archive/2009/03/22/datagrid-validation.aspx了解有关不同验证类型的更多信息。

MSDN 对如何使用它也有很好的解释

http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifydataerrorinfo%28VS.95%29.aspx

关于silverlight - 如何从 Silverlight 4 中的 DataForm.Validating() 事件中删除一个或多个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6549922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com