وراثة قيمة الخاصية

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

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

  • توريث قيمة خاصية هو توريث الاحتواء
  • تطبيقات عملية من توريث قيمة الخاصية
  • جعل خاصية مخصصة قابلة للوراثة
  • وراثة قيم الخاصية عبر حدود الشجرة
  • موضوعات ذات صلة

توريث قيمة خاصية هو توريث الاحتواء

"التوريث" كمصطلح هنا ليس نفس المفهوم تماماً كالتوريث في سياق برمجة موجهة عامة, حيث ترث الفئات المشتقة تعريفات الأعضاء بها من فئات أساسية. معنى التوريث هذا أيضاً نشط في WPF: يتم عرض الخصائص المعرفة في فئات أساسية مختلفة مثل سمات المشتقة XAML الفئات عند استخدامها على أنها عناصر ، و كشف كأعضاء للتعليمات البرمجية. توريث قيمة خاصية هو خاصة حول كيفية أن ترث قيم الخصائص من عنصر واحد إلى آخر من أساس علاقات الأصل - التابع داخل شجرة من العناصر. شجرة العناصر تلك أكثر مرئية مباشرة عند تداخل العناصر داخل عناصر أخرى كما يتم تعريف التطبيقات في XAML العلامات. أشجار كائنات يمكن إنشاءها برمجياً خلال إضافة كائنات إلى مجموعات معينة من الكائنات الأخرى و توريث قيمة الخاصية يعمل بنفس الطريقة في الشجرة المنتهية في وقت التشغيل.

تطبيقات عملية من توريث قيمة الخاصية

WPF واجهات APIتتضمن العديد من الخصائص التي لها إمكانية توريث. عادةً ما يكون سيناريو هذه يتضمن خاصية حيث تكون مناسبة لتعيينها مرة واحدة فقط لكل صفحة, و لكن مكان هذه الخاصية أيضاً عضو في فئات العنصر الأساسي و يتم وبالتالي تواجدها على معظم العناصر التابعة. على سبيل المثال، خاصية FlowDirection تتحكم باتجاه المحتوى الذي يجب أن يتم تقديمه و ترتيبه على الصفحة. عادةً ما تريد معالجة مفهوم تدفق النص بشكل متناسق خلال كافة العناصر التابعة. إذا كان اتجاه التدفق لسبب ما تم إعادة تعيينه في بعض مستوى شجرة العنصر عن طريق المستخدم أو بيئة الإجراء، يجب عادةً إعادة تعيينه. عند FlowDirection خاصية إجراء وراثة ، القيمة تحتاج فقط لتعيينها أو إعادة تعيينها مرة واحدة في مستوى شجرة العنصر الذي يشمل العرض التقديمي لكل صفحة في التطبيق. حتى القيمة الافتراضية الأولي ترث بهذه الطريقة. طراز وراثة قيمة الخاصية لا يزال يمكّن العناصر الفردية لإعادة تعيين قيمة بعض الحالات النادرة حيث يكون لديك خليط توجيهات التدفق المقصودة.

جعل خاصية مخصصة قابلة للوراثة

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

لجعل خاصية تشارك في وراثة قيمة قم بإنشاء خاصية مخصصة مرفقة، كما هو موضح في كيفية القيام بما يلي: تسجيل الخاصية المرفقة. تسجيل الخاصية مع بيانات التعريف ( FrameworkPropertyMetadata) حدد خيار "التوريث" في إعدادات الخيارات داخل بيانات التعريف. أيضاً تأكد من أن الخاصية لها قيمة افتراضية مؤسسة, لأن الآن ستتوارث تلك القيمة. على الرغم من أن تم تسجيل الخاصية كمرفقة, قد تحتاج أيضًا لإنشاء خاصية "المجمّع" للحصول على/تعيين الوصول على نوع المالك, كما لو كانت "غير مرفقة" خاصية التبعية . بعد القيام بهذا، الخاصية القابلة للتوريث يمكنك إما تعيينها باستخدام مباشرة مجمّع خاصية على نوع مالك أو الأنواع المشتقة أو أنه يمكن تعيينه باستخدام بناء جملة الخاصية المرفقة في أي DependencyObject.

الخصائص المرفقة تشبه في المفهوم الخصائص العمومية; يمكنك البحث عن القيمة في أي DependencyObject للحصول على نتيجة صالحة. سيناريو مثالي للخصائص المرفقة يتم تعيين قيم الخصائص على عناصر تابعة و تلك سيناريو أكثر فاعلية إذا الخاصية هي خاصية مرفقة التي توجد دوماً ضمنيًا مثل الخاصية المرفقة على كل عنصر ( DependencyObject) في الشجرة.

ملاحظةملاحظة

على الرغم من أن توريث قيمة الخاصية قد تظهر على أنها تعمل لخصائص تبعية غير مرفقة , سلوك توريث للخصائص الغير مرفقة خلال حدود عنصر معينة غير معرفة في شجرة وقت التشغيل.استخدم دوماً RegisterAttached لتسجيل خصائص حيث يمكنك تعيين Inherits في بيانات التعريف.

وراثة قيم الخاصية عبر حدود الشجرة

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

راجع أيضًا:

المبادئ

الخاصية التبعية بيانات التعريف

نظرة عامة حول الخصائص المرفقة

أسبقية قيمة خاصية التبعية