بيانات التعريف خاصية إطار العمل
يتم الإعلام عن خيارات بيانات تعريف خاصية إطار عمل للخصائص الخاصة بعناصر كائن يتم اعتبارها في WPF framework level في بنية Windows Presentation Foundation (WPF). بشكل عام يستلزم تعيين WPF framework-level أن تلك الميزات مثل التقديم وربط البيانات ، ومعالجة نظام الخاصية تتم معالجتهم من قبل عرض WPF التقديمي واجهات API وقابلة للتنفيذ. يتم الاستعلام عن بيانات تعريف خاصية إطار العمل بواسطة هذه الأنظمة لتحديد الصفات المميزة الخاصة لخصائص عنصر معين.
يشتمل هذا الموضوع على الأقسام التالية.
- المتطلبات الأساسية
- ما الذى يتم ارساله بواسطة بيانات تعريف خاصية اطار العمل
- قراءة FrameworkPropertyMetadata
- تحديد بيانات التعريف
- سلوك الدمج لبيانات تعريف خاصية اطار العمل
- موضوعات ذات صلة
المتطلبات الأساسية
يفترض هذا الموضوع فهم خصائص التبعية من منظور المستهلك للخصائص التبعية الموجودة على فئات Windows Presentation Foundation (WPF) وأنك قرأت نظرة عامة حول خصائص التبعية يجب عليك أيضاً أن نكون قرأت الخاصية التبعية بيانات التعريف.
ما الذى يتم ارساله بواسطة بيانات تعريف خاصية اطار العمل
بيانات تعريف إطار العمل يمكن أن يتم تقسيمها إلى الفئات التالية:
الإعلام عن خصائص التخطيط التي تؤثر على عنصر ( AffectsArrange ، AffectsMeasure ، AffectsRender). يمكنك تعيين هذه العلامات في بيانات التعريف إذا كانت الخاصية تؤثر على تلك الأوجه المعنية ، وتقوم أيضاً بتطبيق الأساليب MeasureOverride / ArrangeOverride في الفئة الخاصة بك لتوفير سلوك تقديم معين ومعلومات نظام التخطيط. بشكل عام، مثل هذا التطبيق سيتحقق من عدم التحقق للخاصية فى الخصائص التبعية حيث أي من خصائص التخطيط هذه كانت صحيحة في بيانات تعريف الخاصية وفقط هذه التعديات تتطلب طلب مرور تخطيط جديد.
الإعلام عن خصائص التخطيط التي تؤثر على العنصر الأصل لعنصر ( AffectsParentArrange ، AffectsParentMeasure). بعض الأمثلة حيث هذه العلامات تم تعيينها افتراضياً FixedPage.Left و Paragraph.KeepWithNext.
Inherits. بواسطة الافتراضي, تبعية خصائص do not يورث قيم. OverridesInheritanceBehavior allows the pathway of توريث إلى also travel في a شجرة مرئية, which هو necessary for some عنصر تحكم compositing scenarios.
ملاحظة المصطلح "يرث" في سياق قيم الخاصية يعني شيء ما محدد للخصائص التبعية; فهذا يعني أنه يمكن للعناصر التابعة أن ترث قيمة الخاصية التبعية الفعلية من عناصر الأصل بسبب قدرة WPF framework-level الخاصة بنظام الخاصية WPF صواب نظام.ليس هناك علاقة مباشرة بنوع التعليمات البرمجية المدارة وتوريث الأعضاء من خلال الأنواع المشتقة.للمزيد من التفاصيل ، راجع وراثة قيمة الخاصية.
الإعلام عن الصفات المميزة لربط البيانات ( IsNotDataBindable ، BindsTwoWayByDefault). بشكل افتراضي، تعتمد الخصائص التبعية في إطار العمل ربط البيانات بسلوك ربط أحادي الاتجاه. قد يتم تعطيل ربط البيانات إذا لم يكن هناك سيناريو لها (لأنه تم تخصيصها كى تكون مرنة وقابلة للتوسعة ، لا توجد العديد من الأمثلة لمثل هذه الخصائص في WPFواجهات API الافتراضي). قد تقوم بتعيين الربط لتمتلك ثنائية الاتجاه للخصائص التى تربط سوياً سلوك عنصر تحكم بين قطع المكون الخاص بها ( IsSubmenuOpen هو مثال) أو حيث ثنائية الاتجاه هو السيناريو الشائع والمتوقع للمستخدمين ( Text هو مثال). تغيير بيانات التعريف الخاصة بربط البيانات تؤثر فقط على الافتراضي; على أساس ربط أن دوماً يمكن تغيير الافتراضي. للحصول على تفاصيل حول أوضاع الربط والربط بشكل عام, راجع نظرة عامة لربط البيانات.
تقرير ما إذا كان يجب أن يتم نشر الخصائص بواسطة التطبيقات أو الخدمات التي تعتمد النشر ( Journal). للعناصر العامة لا يتم تمكين عمل اليومية افتراضياً ، ولكن يتم تمكينه بشكل انتقائي لعناصر تحكم معينة من إدخال المستخدم. هذه الخاصية تهدف إلى أن يمكن قراءتها من قبل خدمات عمل اليومية بما في ذلك تطبيق WPF الخاص بعمل اليومية ، ويتم تعيينها عادةً على عناصر تحكم المستخدم مثل تحديدات المستخدم داخل القوائم التي يجب أن تكون موجودة بشكل ثابت عبر خطوات التنقل. للحصول على معلومات حول دفتر اليوميات ، راجع نظرة عامة حول التنقل.
قراءة FrameworkPropertyMetadata
كل من الخصائص المرتبطة أعلاه هي الخصائص المعينة التي يضيفها FrameworkPropertyMetadata الى الفئة الأساسية الخاصة به UIPropertyMetadata. كل من هذه الخصائص سيكون false افتراضياً. طلب بيانات التعريف لخاصية حيث معرفة قيمة هذه الخصائص مهم سيحاول إجراء عملية تحويل نوع بيانات التعريف التي تم إرجاعها إلى FrameworkPropertyMetadata ، ثم يقوم بالتحقق من قيم الخصائص الفردية حسب الحاجة.
تحديد بيانات التعريف
عند إنشاء مثيل جديد لبيانات التعريف لأغراض تطبيق بيانات التعريف الى تسجيل خاصية تبعية جديدة ، فإنك تمتلك خيار استخدام أى فئة بيانات التعريف: PropertyMetadata الأساسية أو فئة مشتقة مثل FrameworkPropertyMetadata. بشكل عام، يجب عليك استخدام FrameworkPropertyMetadata ، خاصة إذا كان لدي الخاصية الخاصية الخاصة بك أى تفاعل مع نظام الخاصية ووظائف WPF مثل التخطيط وربط البيانات. خيار آخر لسيناريوهات أكثر تعقيداً ينحدر من FrameworkPropertyMetadata لإنشاء بيانات التعريف الخاصة بك التى تقوم بالإعلام عن فئة مع نقل معلومات إضافية في الأعضاء الخاصة بها. أو يمكنك استخدام PropertyMetadata أو UIPropertyMetadataلارسال درجة الدعم لمميزات التطبيق الخاص بك.
للخصائص الموجودة ( AddOwner أو استدعاء OverrideMetadata) ، يجب دائماً أن تتجاوز نوع بيانات التعريف المُستخدَم بواسطة عملية التسجيل الأصلية.
إذا كنت تقوم بإنشاء مثيل FrameworkPropertyMetadata ، توجد طريقتان لنشر بيانات التعريف مع قيم الخصائص المعينة التي ترسل صفات خاصية إطار العمل:
قم باستخدام منشىء التوقيع FrameworkPropertyMetadata الذى يسمح بمتغير flags. يجب أن تتم تعبئة هذه المعلمة بكافة القيم المنضمة المطلوبة الخاصة بعلامات التعداد FrameworkPropertyMetadataOptions.
استخدم أحد التواقيع بدون المتغير flags ، ثم قم بتعيين كل إرسال تقارير منطقية على FrameworkPropertyMetadata إلى true لكل تغير مطلوب فى السمات. في حالة القيام بذلك، يجب عليك تعيين هذه الخصائص قبل أية عناصر مع أن يتم بناء هذه الخاصية التبعية; الخصائص المنطقية هى للقراءة والكتابة للسماح لهذا السلوك بتجنب المتغير flags ولا يزال يتم نشر بيانات التعريف ولكن يجب أن تصبح بيانات التعريف محكمة بشكل فعال قبل استخدام الخاصية. وبالتالي، محاولة تعيين الخصائص بعد طلب بيانات التعريف هى عملية غير صالحة.
سلوك الدمج لبيانات تعريف خاصية اطار العمل
عندما تقوم بتجاوز بيانات تعريف خاصية اطار العمل ، يتم دمج أو استبدال صفات بيانات التعريف المختلفة.
PropertyChangedCallback مدمج. إذا قمت بإضافة جديد PropertyChangedCallback, يتم تخزين رد الاتصال هذا في بيانات التعريف. إذا لم تحدد PropertyChangedCallback في التجاوز, قيمة PropertyChangedCallback تعامل كمرجع من أقرب عنصر أصل المعين في بيانات التعريف.
سلوك نظام الخاصية الفعلي لـ PropertyChangedCallback هو أن تطبيقات كافة مالكي بيانات التعريف في التسلسل الهرمي يتم الاحتفاظ بها وإضافتها إلى جدول، بترتيب التنفيذ بواسطة نظام الخاصية الذي يتم استدعاء عمليات استرجاعات الفئة المشتقة الأكثر تتم أولاً. يتم تشغيل عمليات الاسترجاعات الموروثة مرة واحدة فقط مع العد ملكاً للفئة التي وضعتهم في بيانات التعريف.
DefaultValueيُستبدل. إذا لم تحدد PropertyChangedCallback في التجاوز, قيمة DefaultValue تأتي من أقرب عنصر أصل معين في بيانات التعريف.
CoerceValueCallback يتم استبدال التطبيقات. إذا قمت بإضافة جديد CoerceValueCallback, يتم تخزين رد الاتصال هذا في بيانات التعريف. إذا لم تحدد CoerceValueCallback في التجاوز, قيمة CoerceValueCallback تعامل كمرجع من أقرب عنصر أصل المعين في بيانات التعريف.
سلوك نظام الخاصية هو أن فقط CoerceValueCallback يتم استدعاء بيانات التعريف الفورية. لا يوجد أية مراجع CoerceValueCallback لتطبيقات أخرى في التسلسل الهرمي.
العلامات الخاصة بالتعداد FrameworkPropertyMetadataOptions يتم ضمها مثل عملية OR أحادية البيت. إذا حددت FrameworkPropertyMetadataOptions ، لا تتم الكتابة فوق الخيارات الأصلية. لتغيير خيار ، قم بتعيين الخاصية المطابقة على FrameworkPropertyMetadata. على سبيل المثال، إذا قام الكائن FrameworkPropertyMetadataبتعيين العلامة FrameworkPropertyMetadataOptions.NotDataBindable ، يمكنك تغيير ذلك بواسطة تعيين FrameworkPropertyMetadata.IsNotDataBindable الى false.
يتم تطبيق هذا السلوك بواسطة Merge ، ويمكن تجاوزها على فئات بيانات التعريف المشتقة.