Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCrossで必要な使用とBindRequiredの使用の違いは何ですか


MVVMCrossで必要な使用とBindRequiredの使用の違いは何ですか


MVVMCrossでは、必要な用語とバインドリクエアされた用語は、ASP.NETコアにあるため、直接適用できません。ただし、ASP.NETコアでの役割を理解することは、MVVMCrossで同様の概念がどのように適用されるかを明確にするのに役立ちます。

asp.netコアコンテキスト

- 必要なアトリブ:この属性により、モデルバインディングが発生した後、プロパティが無効または空でないことが保証されます。これは主に検証目的で使用され、必須フィールドがフォームまたはデータ入力シナリオで満たされていることを確認します[1] [3] [6]。

-BindRequiredAttribute:この属性は、モデルバインディング中に着信データにプロパティが存在することを保証します。必須とは異なり、その無効性だけでなく、要求データにプロパティの存在をチェックします[1] [3] [4]。

mvvmcrossコンテキスト

MVVMCrossでは、ビューとViewModelの間のデータ結合に焦点が当てられています。フレームワークは、必要な属性またはバインドされた属性を直接使用しません。代わりに、ビューとビューモデル[2] [7]の間のデータの同期を管理するために、OnewayやTwowayなどの結合モードに依存しています。

-MVVMCrossのバインディングモード:
- ワンウェイ:データはビューモデルからビューに流れます。
-Twoway:データは、ビューとViewModelの間で両方の方法で流れます。これは、MVVMCross [7]のカスタムバインディングのデフォルトモードです。

MVVMCrossで必要またはバインドされた同様の機能を実現するには、通常、ViewModel内に検証ロジックを実装するか、カスタムバインディングを使用して特定のプロパティが正しく更新されるようにします。たとえば、InotifyPropertyChangedを使用してViewModelの変化のビューを通知し、データが常に最新の[2] [8]であることを確認することができます。

MVVMCrossでの検証の実装

MVVMCrossは必要またはバインドされたものを直接サポートしていませんが、ViewModelのプロパティ内でnullまたは空の値をチェックすることで検証を実装できます。これは、手動で行うか、MVVMCrossと統合する検証フレームワークを使用して実行できます。

### まとめ

要約すると、データの存在と検証を保証するために必要とバインドリクエアされたものはASP.NETコアに固有のものですが、MVVMCrossは、データの整合性を管理するためのバインディングメカニズムとカスタム検証ロジックに依存しています。 MVVMCrossに特定のデータが存在するか有効であることを確認する必要がある場合は、通常、ViewModelまたはカスタムバインディングを使用してこのロジックを実装します。

引用:
[1] https://blog.dominikasikorska.pl/required-vs-bindrequired/
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross binding-target.html
[3] https://dotnettutorials.net/lesson/bindnever-and-bindrequired-attribute-in-asp-net-core-mvc/
[4] https://www.strathweb.com/2017/12/required-and-bindrequired-in-asp-net-core-mvc/
[5] https://www.mvvmcross.com/documentation/plugins/methodbinding
[6] https://towardsdev.com/mastering-the-requiredattribute-a-detailed-comparison-of-requear-vs-bindrequired-b3feaf108ef5
[7] https://stackoverflow.com/questions/41768962/mvvvmcross-default-mode-ins-in-a-project
[8] https://www.mvvmcross.com/documentation/advanced/custom-dataバインディング