データ入力と検証
前回、単純な画面遷移ができたので、
今回は、画面から値を入力し、検証結果で画面遷移を制御してみます。
開発環境
- Win11
- VS2022 Preview Version 17.3.0 Preview 2.0
環境構築&プロジェクト作成の流れはこちらの記事でどうぞ。
実装
単純なものがよいので、ログイン画面にしてみました。
.NET MAUI の実装方法も、変わらずMVVMです。
作成したソースをGithubに公開しました。
Shell
ログイン画面と、遷移先の画面を追加しておきます。
ログイン画面
社員番号は数値4桁。
パスワードは社員番号と同じであれば、メイン画面へ遷移します。
入力値が不正な場合や、パスワードが不一致の場合は、ログイン画面にエラーメッセージを表示します。
LoginPage.xaml
LoginPage.xaml.cs
入力値の検証
どうやるのがベストプラクティスなのかわからなかったので、Behaviorでやってみました。
ValidationPropertyBehavior.cs
ValidationPropertyConverter.cs
エラーがある場合、ログインボタンは無効化されているので、社員番号に「abcd」を入力してみます。
テキストが変更されるたびに、エラー内容が切り替わります。
TODO Unfocusedでのイベント発火に変更する
UIの部品化
検証エラーの一覧表示(赤い枠の部分)を、ContentViewを継承して部品化してみた。
ValidationPropertyError.xaml
ValidationPropertyError.xaml.cs
※上記では使ってないけど、エラーを全部まとめて表示するやつ
ValidationPropertyErrors.xaml
ValidationPropertyErrors.xaml.cs
メイン画面
入力値が正しい状態で、[ログイン]ボタンを押してみます。
ログイン画面で入力した社員番号を、メイン画面に渡して表示しました。
MainPage.xaml
MainPage.xaml.cs
画面間のデータの受け渡し
データの渡し方としては、QueryParameterでやってみました。
別の方法として、画面間のデータの受け渡しはDIで