【发布时间】:2018-08-01 10:29:18
【问题描述】:
我有一个文本框,因此用户可以输入他们的电子邮件地址。我已经实现了 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
【问题讨论】:
-
将
IsValidEmailAddress()方法转为带有更改通知的属性(例如IsValidEmailAddress),并将Button的IsEnabled属性绑定到它。 -
我已经成功实现了你的建议,谢谢,有没有办法让它在资源目录中工作?由于资源目录不知道 IsValidEmailAddress 属性@Clemens
标签: wpf xaml mvvm idataerrorinfo