我有一个电子邮件地址TextBox
,因此用户可以输入他们的电子邮件。我已经通过IDataErrorInfo
接口实现了MVVM模式,以显示错误。
ViewModel
具有名为IsValiedEmailAddress
的属性,该属性检查电子邮件地址是否为有效的电子邮件格式:
/// Check to see if email if valid
#region
public bool IsValidEmailAddress
{
get
{
try
{
MailAddress address = new MailAddress(EmailAddress);
return true;
}
catch
{
return false;
}
}
set
{
OnPropertyChanged("IsValidEmailAddress");
}
}
#endregion
如您在图像中所见,逻辑和IDataErrorInfo
在显示错误时工作正常。
我要做的是在电子邮件地址无效时禁用该按钮。
我尝试将属性绑定到按钮,但是,由于我使用ResourceDirectory
创建按钮的样式并进行其他验证以防止按钮被按下(例如电子邮件被空的。
<ResourceDirectory>
<!-- OTHER CODE EMITTED SUCH AS STYLING -->
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Text.Length, ElementName=EmailAddressTextBox, UpdateSourceTrigger=PropertyChanged}" Value="0">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsValidEmailAddress, ElementName=EmailAddressTextBox}" >
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style
</ResourceDirectory>
除非用户插入了正确格式的电子邮件地址,否则如何防止按下提交按钮
到目前为止,这是我在资源目录中将IsValidEmailAddress
绑定到按钮的内容。我不确定这是怎么回事。
<DataTrigger Binding="{Binding IsValidEmailAddress, ElementName=EmailAddressTextBox}" >
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>