خصائص للقراءة فقط التبعية

يصف هذا الموضوع خصائص تبعية للقراءة فقط بما في ذلك خصائص تبعية للقراءة فقط موجودة والسيناريوهات والتقنيات لإنشاء خاصية تبعية للقراءة فقط يمكن تخصيصها.

يشتمل هذا الموضوع على الأقسام التالية.

  • المتطلبات الأساسية
  • الخصائص التبعية الموجودة للقراءة فقط
  • إنشاء خصائص تبعية مخصصة وللقراءة فقط
  • موضوعات ذات صلة

المتطلبات الأساسية

يفترض هذا الموضوع أنك على دراية بالسيناريوهات الأساسية لتطبيق خاصية تبعية، وكيفية تطبيق بيانات التعريف الى خاصية تبعية مخصصة. راجع خصائص التبعية المخصصة و الخاصية التبعية بيانات التعريف للسياق.

الخصائص التبعية الموجودة للقراءة فقط

بعض الخصائص التبعية المعرفة في اطار العمل Windows Presentation Foundation (WPF) هى للقراءة فقط. السبب العام لتعيين خاصية تبعية للقراءة فقط هو أن هذه هي الخصائص التي يجب استخدامها لتحديد الحالة ولكن حيث توجد هذه الحالة التى تكون متأثرة بعوامل متعددة ولكن فقط تعيين هذه الخاصية إلى هذه الحالة غير مفضل من منظور تصميم واجهة مستخدم. على سبيل المثال، الخاصية IsMouseOver ما هى الا حالة كما تم تحديدها من إدخال الماوس. أية محاولة لتعيين هذه القيمة بشكل برمجي بواسطة تحايل ادخال الماوس الصحيح ستكون غير متوقعة وقد تسبب عدم تناسق.

بواسطة عدم التمتع بقابلية التعيين، الخصائص التبعية للقراءة فقط تكون غير مناسبة للعديد من السيناريوهات التي تقدم فيها الخصائص التبعية حلاً (تسمى: ربط البيانات، القابلية لأخذ نمط الى قيمة ، التحقق من الصحة ، الحركة أو التوريث). بالرغم من عدم القابلية للتعيين ، الخصائص التبعية للقراءة فقط لا يزال لها بعض القدرات الإضافية المعتمدة من قبل الخصائص التبعية في نظام الخاصية. الإمكانية المتبقية الأهم هي أنه الخصائص التبعية للقراءة فقط لا يزال بالإمكان استخدامها كمشغّل لخاصية في نمط. لا يمكنك تمكين المشغلات مع خاصية وقت تشغيل اللغة العامة (CLR) عادية; يجب أن يكون خاصية تبعية. الخاصية IsMouseOver السابق ذكرها هى مثال رائع لسيناريو حيث قد يكون مفيداً تماماً تعريف أحد الأنماط لعنصر تحكم، حيث بعض الخصائص المرئية مثل الخلفية ، الأمامية أو خصائص مماثلة لعناصر مركبة داخل عنصر التحكم سوف تغيير عندما يضع المستخدم الماوس فوق بعض المناطق المعرفة من عنصر التحكم. التغييرات في الخاصية تبعية للقراءة فقط يمكن أيضاً أن يتم الكشف عنها وأن يتم الإعلام عنها من قبل عمليات التحقق من الصحة الموروثة من نظام الخاصية وهذه العمليات بالفعل تدعم وظيفة تشغيل الخاصية داخلياً.

إنشاء خصائص تبعية مخصصة وللقراءة فقط

تأكد من قراءة المقطع أعلاه فيما يتعلق بـ لماذا لن تعمل الخصائص التبعية للقراءة فقط للعديد من سيناريوهات الخصائص التبعية. ولكن إذا كان لديك سيناريو مناسب قد تحتاج إلى إنشاء الخاصية التبعية الخاصة بك والقابلة للقراءة فقط.

معظم عملية إنشاء خاصية تبعية قابلة للقراءة فقط هو نفسه كما هو موضح في المواضيع خصائص التبعية المخصصة و كيفية القيام بما يلي: تطبيق على خاصية التبعية. هناك ثلاثة اختلافات هامة:

  • عند تسجيل الخاصية الخاصة بك، قم باستدعاء الأسلوب RegisterReadOnly بدلاً من الأسلوب Register العادى من أجل تسجيل الخاصية.

  • عند تطبيق خاصية المجَمعCLR، تأكد من أن برنامج التجميع لا يحتوي على تطبيق مجموعة، بحيث لا يوجد عدم تناسق في حالة القابلية للقراءة فقط لبرنامج المجَمع الذى تقوم بعرضه.

  • الكائن الذى يتم إرجاعه بواسطة تسجيل القابلية للقراءة فقط هو DependencyPropertyKey بدلاً من DependencyProperty. يجب أن يتم تخزين هذا الحقل كعضو ولكن عادةً يمكنك ألا تجعله عضو عمومي.

أي قيمة أو حقل مخصص لديك يمكن للخاصية التبعية القابلة للقراءة فقط الخاصة بك أن تكون قابلة للكتابة تماماً أياً كان نوع المنطق الذى تقرره. ومع ذلك، أكثر طريقة مباشرة لتعيين الخاصية سواء كقيمة ابتدائية أو كجزء من منطق وقت التشغيل هى استخدام نظام الخاصية واجهات API ، بدلاً من تحايل نظام الخاصية وتعيين الحقل مباشرة. وبشكل خاص، يوجد توقيع SetValue الذي يقبل متغير من النوع DependencyPropertyKey. كيفية ومكان تعيين هذه القيمة بشكل برمجي داخل منطق التطبيق الخاص بك سيؤثر على كيفية رغبتك في تعيين الوصول على DependencyPropertyKey المنشأ عندما تقوم بتسجيل الخاصية التبعية لأول مرة. في حالة معالجة منطق كافة داخل الفئة فيمكنك أن تجعله خاصاً أو إذا كنت تحتاج لتعيينه من أجزاء أخرى من التجمع قد تقوم بتعيينه على أنه داخلي. أحد الطرق هى استدعاء SetValue داخل فئة معالج أحداث لحدث ذا صلة والذى يقوم بإعلام مثيل فئة أن قيمة الخاصية المخزنة تحتاج إلى تغيير. أسلوب آخر لربط الخصائص التبعية معاً باستخدام زوج عمليات الاسترجاع PropertyChangedCallback وCoerceValueCallback كجزء من بيانات تعريف هذه الخصائص أثناء التسجيل.

لأن DependencyPropertyKey هو خاص، كما لا يتم نشره بواسطة نظام الخاصية خارج التعليمات البرمجية، تمتلك الخصائص التبعية القابلة للقراءة فقط تعيينات أمان بشكل أفضل من الخصائص التبعية القابلة للقراءة والكتابة. لخصائص تبعية قابلة للقراءة والكتابة، يظهر تعريف الحقل بشكل صريح أو ضمني عاماً وبالتالي تكون الخاصية قابلة للتعيين. للحصول على المزيد من المواصفات راجع حماية الخاصية التبعية.

راجع أيضًا:

المبادئ

نظرة عامة حول خصائص التبعية

خصائص التبعية المخصصة

التنسيق و القولبة