開発記その 5 - ログイン画面開発中でバリデーションが微妙すぎる件について -

さて、遅々として進まない開発だが、やっとこさログイン画面の実装が"ほぼ"完了。"ほぼ"と書いたのはバリデーションが非常に微妙すぎるのだ。どこが微妙かと言うと、ログイン実行の時にユーザーがいないかパスワードが間違っていた場合。

現状では、UserName と Password のそれぞれに自前でメッセージを設定して ErrorsChanged を投げている。そのため、以下のような画面が表示されることになる。

ユーザー名とパスワードのそれぞれのテキストボックスが赤くマークされるのは微妙な気もしないではないが、まだ許容範囲内だろう。しかし、 ValidationSummary に 2 行表示されるのは痛い。その他にもいろいろあり、今のところ思っているところを書き出すと以下のような感じである。

  • ValidationSummary に 2 行表示されるのはいただけない
    • 同じメッセージの場合は 1 行でお願いしたい
  • このエラーが表示されているときにユーザー名を変更したら、ユーザー名のマークは消えるがパスワードのマークが残る
    • パスワードのマークも消したい
  • ボタンが押されたときに (INotifyDataErrorInfo インターフェイスの) HasErrors プロパティが true だったら、有無を言わさず処理をさせたくない
    • 現状はなにもチェックせずに各プロパティのバリデーションを実行している。プロパティのバリデーションチェックで引っかかったエラー以外は削除する動きになっているため、暗黙的に自身で設定したエラーは削除されるのだ

ValidationSummary は少し置いておいて、下の二つはコードの方で対応できる気がする。エラーを保存するときにプロパティのバリデーションか設定されたかを保持しておく。設定するエラーの時は、対応するプロパティをグルーピングできるようにしておく。ってところか。ちょっと込入り始めそうな気がするが多分許容範囲内で実装できそう。


ValidationSummary は、、、、あとで考えよう。(自前で使いやすいのを作る結論にしそうな気がしないでもない)

まだまだ、ログイン画面は続きます。

※今回のチェックイン
http://moneybook.codeplex.com/SourceControl/changeset/changes/53744