MVVMCrossでは、1回限りのデータバインディングは、バインディングが確立されたときに、データがViewModelからビューに1回だけ表示されるモードです。この最初の転送の後、バインディングは変更を監視せず、バインディングソース自体がリセットされない限り、更新を実行しません。 1回限りのデータバインディングの一般的なユースケースは次のとおりです。
1。言語ファイルからの静的テキスト:言語ファイルから静的テキストを設定する場合、1回限りのバインディングは特に役立ちます。言語が選択されると、ユーザーがそれを変更することは珍しいので、継続的な更新は必要ありません。このアプローチは、発生する可能性が低い変化の不必要なチェックを回避するため、クリーンで効率的なバインディングセットアップを維持するのに役立ちます[2]。
2。構成可能だがめったに変更されないデータ:構成可能であるが、最初に設定された後に頻繁に変更する傾向がないフィールドの場合、1回限りのバインディングが有益である可能性があります。これには、初期化中に設定された設定またはデータが含まれ、アプリケーションのランタイム全体で一定のままです。
3。パフォーマンスの最適化:通常、一元配置バインディングを使用するためのパフォーマンスペナルティはありませんが、1回限りのバインディングは、変化検出に関連する潜在的なオーバーヘッドを排除することにより、パフォーマンスをさらに最適化できます。これは、データが静的であることが知られており、更新を必要としないシナリオで特に関連する可能性があります。
4.不要な更新の削減:データがほとんど静的であり、1回限りのバインディングを使用して不要な更新を防ぐために一度表示する必要がある場合。これは、特に複雑またはデータ集約型のアプリケーションで、変化の頻繁なチェックに関連する計算オーバーヘッドを減らすのに役立ちます。
5.条件論的ロジックの簡素化:静的データに1回限りのバインディングを使用することにより、開発者は画面レイアウトまたはデータプレゼンテーションに関連する条件付きロジックを簡素化できます。これにより、動的なデータ処理を静的データディスプレイから分離することにより、クリーンなコードベースを維持するのに役立ちます。
要約すると、MVVMCrossでの1回限りのデータバインディングは、データが静的またはまれに変更されないシナリオに最適であり、連続的な変更モニタリングのオーバーヘッドなしで効率的で簡単なデータプレゼンテーションを可能にします。
引用:[1] https://blog.ostebaronen.dk/2018/01/mvvmcross binding-target.html
[2] https://www.mvvmcross.com/documentation/fundamentals/dataバインディング
[3] https://www.reddit.com/r/androiddev/comments/ux9379/what_are_the_use_cases_of_data_binding_and_when/
[4] https://www.mvvmcross.com/documentation/advanced/custom-dataバインディング
[5] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxrecyclerview
[6] http://stackoverflow.com/questions/10700445/in-mvvmcross-how-do-ido-custom.-bind-properties
[7] https://stackoverflow.com/questions/25460030/when-to-use-mvvmcross-data-bindings
[8] https://github.com/mvvmcross/mvvmcross/issues/421
[9] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-bhuild-mvvm-apps-with-xamarin-and-mvvmcross