从ResourceDirectory绑定到ViewModel中的属性

时间:2018-08-01 17:15:34

标签: c# wpf xaml mvvm idataerrorinfo

我有一个电子邮件地址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>

enter image description here

0 个答案:

没有答案