xaml - الفرق بين الربط و x: الربط




data-binding win-universal-app (2)

ما يلي ربما لم يكتمل ، ولكن بعض الاختلافات الرئيسية

  • النمط القديم {Binding }

    • يربط إلى DataContext
    • يربط اسم الخاصية ، ومرنة حول نوع المصدر الفعلي


  • نمط جديد {x:Bind }
    • يرتبط بالعنصر Framework (فئة الكود خلف)
    • يحتاج جميع أنواع ثابتة في وقت الترجمة
    • الإعدادات الافتراضية لوضع OneTime الأكثر مقتصدًا

وبدءًا من الإصدار 14393 ، يدعم {x:Bind } :

  • ربط BooleanToVisibility المباشر ، بدون ValueConverter
  • وظيفة الربط الموسعة
  • صب
  • مفهرسي القاموس

الأحدث {x: Bind} أسرع قليلاً في وقت التشغيل ، ولكن بنفس القدر من الأهمية ، فإنها ستوفر أخطاء مترجم للارتباطات الخاطئة. باستخدام {Binding} ، سترى عنصر تحكم فارغًا في معظم الحالات.

ما يجب استخدامه في UWP أو Binding أو x:Bind وما الفرق بينهما؟

لأنني أرى الكثير من المنشورات حيث يستخدم الناس Binding و I Bind فقط مع x:Bind في UWP.

في الصفحة الرئيسية لـ MSDN ، تشير فقط إلى أن "كائنات الربط التي أنشأتها {x:Bind} و {Binding} متكافئة وظيفيًا إلى حد كبير." وهذا x:Bind أسرع .

ولكن ما هو الفرق بينهما؟

لأن "المكافئ وظيفيًا إلى حد كبير" لا يعني مكافئًا.

الرابط من بلدي اقتباس: MSDN

لذلك سؤالي هو:

ما هو الفرق في استخدام Binding أو x: Bind في UWP؟


{x:Bind} بتنفيذ التعليمات البرمجية ذات الأغراض الخاصة ، والتي يتم إنشاؤها في وقت الترجمة. يستخدم {Binding} فحص كائن وقت التشغيل العام. وبالتالي ، يتمتع {x:Bind} بأداء رائع ويوفر التحقق من وقت الترجمة لعبارات الربط الخاصة بك. يدعم تصحيح الأخطاء عن طريق تمكينك من تعيين نقاط التوقف في ملفات التعليمات البرمجية التي يتم إنشاؤها كفئة جزئية لصفحتك.

لأن {x:Bind} يستخدم الكود الذي تم إنشاؤه لتحقيق فوائده ، فإنه يتطلب معلومات الكتابة في وقت الترجمة. هذا يعني أنه لا يمكنك ربط الخصائص التي لا تعرف النوع فيها مسبقًا. لهذا السبب ، لا يمكنك استخدام {x:Bind} مع خاصية DataContext التي هي من النوع Object ، كما أنها عرضة للتغيير في وقت التشغيل. يعد ملحق العلامات {x:Bind} - الجديد لنظام Windows 10 - بديلاً عن {Binding} . يفتقر {x:Bind} إلى بعض ميزات {Binding} ، لكنه يعمل في وقت أقل وذاكرة أقل من {Binding} ويدعم تصحيح الأخطاء بشكل أفضل.





uwp