Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCrossで1回限りのバインディングを使用することには制限がありますか


MVVMCrossで1回限りのバインディングを使用することには制限がありますか


MVVMCrossでの1回限りのバインディングは、バインディングソースが設定されている場合、ViewModelからViewに値を1回だけ転送する有用なバインディングモードです。 ViewModelの変化を積極的に監視するわけではありません。つまり、最初のバインディング後にViewModelのプロパティが変化した場合、ビューを更新しません。 1回限りのバインディングを使用するためのいくつかの制限と考慮事項は次のとおりです。

1.継続的な更新なし:1回限りのバインディングの主な制限は、ViewModelの変更に基づいてビューを継続的に更新しないことです。これにより、UIのリアル​​タイムで反映する必要がある動的データには適していません。

2。静的データ:1回限りのバインディングは、頻繁に変更されない静的または読み取り専用データに最適です。たとえば、言語の選択は通常1回行われ、頻繁に変更されないため、言語ファイルから静的テキストを設定するためによく使用されます[1]。

3。RecyclerViewおよび同様のコントロール:「MVXRecyclerview」などのコントロールでは、ビューリサイクルのために予想どおりに動作しない場合があります。ユーザーがリストをスクロールすると、ビューがリサイクルされて再利用され、1回限りのバインディングが再発射され、連続的なバインディングのように効果的に動作する可能性があります[4]。これは、適切に管理されないと予期しない動作につながる可能性があります。

4。パフォーマンスの考慮事項:1回限りのバインディングは変更を監視しませんが、パフォーマンスの問題を本質的に導入しません。ただし、複雑なレイアウトや多くのバインディングで広範囲に使用すると、初期セットアップは、他の結合モードと比較してUIレンダリング時間が遅くなる可能性があります[9]。

5。スレッドの安全性:1回限りのバインディングを含むMVVMCrossバインディングは、適切に管理されていない場合、スレッドの問題によって影響を受ける可能性があります。たとえば、バインディングがワーカースレッドで実行される場合、UIスレッドと適切に同期しない限り、予期しない動作につながる可能性があります[5] [3]。

要約すると、一度限りのバインディングは静的データに役立ちますが、継続的な更新が必要な動的なデータやシナリオには理想的ではありません。さらに、「Recyclerview」のような特定のUIコンポーネントでの動作には、予期しないリベインティングを回避するために慎重な取り扱いが必要です。

引用:
[1] https://www.mvvmcross.com/documentation/fundamentals/dataバインディング
[2] https://stackoverflow.com/questions/25460030/when-to-use-mvvmcross-data-bindings
[3] https://github.com/mvvmcross/mvvmcross/issues/1545
[4] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxrecyclerview
[5] https://www.mvvmcross.com/mvvmcross-4.2/
[6] https://github.com/mvvmcross/mvvmcross/issues/29
[7] https://stackoverflow.com/questions/17156368/
[8] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data binding/binding-mode?view=net-maui-9.0
[9] https://github.com/mvvmcross/mvvmcross/issues/1342
[10] https://www.mvvmcross.com/mvvmcross-5-release/