في MVVMCROSS ، يكون ربط البيانات لمرة واحدة هو وضع حيث يتم نقل البيانات من عرض ViewModel إلى العرض مرة واحدة فقط ، عند إنشاء الربط. بعد هذا النقل الأولي ، لا يراقب الربط التغييرات ولا يقوم بأي تحديثات ما لم يتم إعادة تعيين مصدر الربط نفسه. فيما يلي بعض حالات الاستخدام الشائعة لربط البيانات لمرة واحدة:
1. النص الثابت من ملفات اللغة: الربط لمرة واحدة مفيد بشكل خاص عند تعيين نص ثابت من ملفات اللغة. بمجرد تحديد اللغة ، من غير المألوف أن يقوم المستخدم بتغييره ، لذلك ليست هناك حاجة إلى التحديثات المستمرة. يساعد هذا النهج في الحفاظ على إعداد ربط نظيف وفعال ، لأنه يتجنب عمليات الفحص غير الضرورية للتغييرات التي من غير المرجح أن تحدث [2].
2. قابلة للتكوين ولكن نادراً ما تتغير البيانات: بالنسبة للحقول القابلة للتكوين ولكن لا تميل إلى التغيير بشكل متكرر بعد تعيينها في البداية ، يمكن أن يكون الربط لمرة واحدة مفيدًا. يتضمن ذلك الإعدادات أو البيانات التي يتم تعيينها أثناء التهيئة وتبقى ثابتة طوال فترة تشغيل التطبيق.
3. تحسين الأداء: على الرغم من عدم وجود عقوبة أداء بشكل عام لاستخدام الروابط أحادية الاتجاه ، إلا أن الروابط لمرة واحدة يمكن أن تعمل على تحسين الأداء من خلال القضاء على أي عام محتمل مرتبط بكشف التغيير. يمكن أن يكون هذا مناسبًا بشكل خاص في السيناريوهات التي يُعرف فيها البيانات ثابتة ولا تتطلب تحديثات.
4. تقليل التحديثات غير الضرورية: في الحالات التي تكون فيها البيانات ثابتة في الغالب ولا تحتاج إلا إلى عرضها مرة واحدة ، باستخدام الربط لمرة واحدة يمنع التحديثات غير الضرورية. يمكن أن يساعد ذلك في تقليل النفقات العامة الحسابية المرتبطة بالشيكات المتكررة للتغييرات ، وخاصة في التطبيقات المعقدة أو المكثفة للبيانات.
5. تبسيط المنطق الشرطي: باستخدام الربط لمرة واحدة للبيانات الثابتة ، يمكن للمطورين تبسيط المنطق الشرطي المتعلق بتخطيط الشاشة أو عرض البيانات. يساعد هذا في الحفاظ على قاعدة كود أنظف عن طريق فصل معالجة البيانات الديناميكية من عرض البيانات الثابتة.
باختصار ، يعد ربط البيانات لمرة واحدة في MVVMCROSS مثاليًا للسيناريوهات التي تكون فيها البيانات ثابتة أو نادراً ما تتغير ، مما يتيح عرض بيانات فعال ومباشر دون النفقات العامة لمراقبة التغيير المستمر.
الاستشهادات:[1] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[2] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[3]
[4] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[5] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxrecyclerview
[6]
[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-phone-build-mvvm-apps-with-xamarin-and-mvvmcross