我面临的问题是这个类的某些属性只是有条件的需要而且不需要验证.例如,当应用程序的管理员决定编辑用户时,
他或她可以输入密码/密码确认/密码问题/密码答案.或者他/她可以完全跳过这些属性.
因此,如果管理员决定输入这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接口.public string LabelWrapper { get { return this.Label; } set { ValIDaterequired("LabelWrapper",value,"Label required"); ValIDateRegularExpression("LabelWrapper",@"^[\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","Label required"); ValIDateRegularExpression("LabelWrapper",)"); } 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 4中的DataForm.Validating()事件中删除一个或多个字段?全部内容,希望文章能够帮你解决如何从Silverlight 4中的DataForm.Validating()事件中删除一个或多个字段?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)