1

ユーザーが人を登録するMVVMアプリケーションがあります。個人を登録するには、ユーザーは、提供されている3つのテキストボックスに少なくとも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."
    }
}

これは、要件の「少なくとも2つを指定する」部分をカバーしています...しかし、各番号をチェックするのではなく、提供された各番号の長さをチェックするより洗練された方法はありますか?

4

1 に答える 1

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.";
    }
}
于 2012-05-20T00:54:13.380 に答える