我有一个TextBox,因此用户可以输入其电子邮件地址。我已经实现了IDataErrorInfo接口,并弹出一条消息,告诉用户其电子邮件地址是无效格式。
如果用户输入了无效的电子邮件并按了提交按钮,则该电子邮件仍将保存到数据库中。如果用户输入了无效的电子邮件地址或显示错误消息,如何禁用该按钮?
// Check to see if email is valid
#region
private bool IsValidEmailAddress()
{
try
{
MailAddress address = new MailAddress(EmailAddress);
return true;
}
catch
{
return false;
}
}
#endregion
// Displays text error IDataErrorInfo
private string ValidateEmailAddress()
{
if (String.IsNullOrWhiteSpace(EmailAddress))
return "Email Address Cannot Be Empty";
else if (!IsValidEmailAddress())
return "Email Address Must Be A Valid Format";
else return null;
}
编辑:
如果电子邮件无效,则按下数据触发以停止按钮
<DataTrigger Binding="{Binding IsValidEmailAddress, ElementName=EmailAddressTextBox, UpdateSourceTrigger=PropertyChanged}" >
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
显示无效地址的属性代码
#region
public bool isValidEmailAddress;
public bool IsValidEmailAddress
{
get
{
try
{
MailAddress address = new MailAddress(EmailAddress);
return true;
}
catch
{
return false;
}
}
set
{
OnPropertyChanged("IsValidEmailAddress");
}
}
#endregion
答案 0 :(得分:0)
您可以使用text_changed事件,该事件可以将文本框的值传递给帮助程序类,以对其进行验证。像这样:
public static class ValidatorExtensions
{
public static bool IsValidEmailAddress(this string s)
{
Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
return regex.IsMatch(s);
}
}
,然后在文本更改时:
private void myTextBox_TextChanged(object sender, EventArgs e)
{
bool result = ValidatorExtensions.IsValidEmailAddress( myTextBox.Text );
}