WPF:验证三个文本框,两个必需,最小长度

时间:2012-05-19 09:08:06

标签: wpf validation

我有一个MVVM应用程序,用户注册一个人。要注册一个人,用户必须在提供的三个文本框中提供至少2个有效的电话号码。

“有效”电话号码至少包含10个号码。

我已经实现了IDataErrorInfo,并且我的文本框在绑定属性发生更改时进行验证。

我的问题涉及如何实际验证内容?

这构成了有效的输入:

Textbox 1 : 0123456789
Textbox 2 : 0123456789
Textbox 3 : {null}

原样

Textbox 1 : 0123456789
Textbox 2 : 0123456789
Textbox 3 : 0123456789

然而,这些无效:

Textbox 1 : 0123456789
Textbox 2 : 012345678
Textbox 3 : {null}

Textbox 1 : 0123456789
Textbox 2 : {null}
Textbox 3 : {null}

因此,这实际上更多的是编码问题,而不是验证问题。

我到目前为止:

private string ValidateTelephoneNumbers()
{
    var hasNumber1 = BoundProperty1 != string.Empty;
    var hasNumber2 = BoundProperty2 != string.Empty;
    var hasNumber3 = BoundProperty3 != string.Empty;

    if (hasNumber1 && (hasNumber2 || hasNumber3) || (hasNumber2 && hasNumber3))
    {
        return null;
    }
    else
    {
        return "Specify at least 2 valid telephone numbers."
    }
}

涵盖了要求的“指定至少两个”部分...但是有更优雅的方法来检查每个提供的数字的长度,而不是检查每个数字吗?

1 个答案:

答案 0 :(得分:1)

我会这样做:

private string ValidateTelephoneNumbers()
{
    int number = 0;
    int validNumbers = 0;

    if (int.TryParse(BoundProperty1, out number) && number > 999999999)
        validNumbers++;
    if (int.TryParse(BoundProperty2, out number) && number > 999999999)
        validNumbers++;
    if (int.TryParse(BoundProperty3, out number) && number > 999999999)
        validNumbers++;

    if (validNumbers > 1)
    {
        return null;
    }
    else
    {
        return "Specify at least 2 valid telephone numbers.";
    }
}
相关问题