ملحقات ترميز و XAML WPF

يقدم هذا الموضوع مفهوم ملحقات العلامات Extensible Application Markup Language (XAML) ، بما في ذلك قواعد بناء الجملة والغرض وفئة الكائن الخاص بهم. ملحقات ترميز إحدى ميزات عامة XAML اللغة وتنفيذ الخدمات XAML.NET. هذا الموضوع بالتفصيل ترميز ملحقات خصيصا استخدم في XAML WPF.

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

  • معالجات XAML وملحقات العلامات
  • بناء ملحقات العلامات الأساسية
  • ملحق علامات معرف من قبل XAML
  • ملحق علامات محددة لـ WPF
  • * فئات الامتداد
  • تسلسلات الهروب وملحقات ترميز
  • تداخل ترميز ملحقات في استخدام XAML
  • بناء الجملة الخاص بعنصر ملحقات و خصائص ترميز
  • موضوعات ذات صلة

معالجات XAML وملحقات العلامات

وبشكل عام، يمكن محلل XAML بترجمة القيمة سمة لها بإما كـ سلسلة قيمة حرفية يمكن تحويله إلى أساسية، أو تحويله إلى كائن ببعض وسيلة. واحد وسيلة هو الإشارة إلى نوع محوّل; th هو هو موثقة في موضوع TypeConverters و XAML. ومع ذلك، هناك سيناريوهات الموقع مختلفة السلوك هو المطلوبة. ل مثال، XAMLيمكن أن تكون معارضة المعالج أن القيمة سمة يجب أن لا يؤدي كائن جديد في الرسم البياني الكائن. بدلاً من ذلك، يجب أن ينتج عن السمة في رسم كائن يجعل مرجع إلى كائن constructed مسبقاً في جزء آخر من الرسم البياني، أو كائن ثابت. سيناريو آخر هو XAMLالتي يمكن أن تكون معارضة المعالج إلى استخدم بناء جملة التي توفر الوسيطات غير افتراضي إلى construcإلىr الكائن. هذه هي أنواع وحدات السيناريو بحيث يمكن أن توفر ملحقات علامات الحل.

بناء ملحقات العلامات الأساسية

يمكن تنفيذ ملحق علامات لتوفير قيم الخصائص أثناء استخدام سمة، أو عنصر أو كليهما.

عند استخدامها لتوفير قيمة سمة ، بناء الجملة الذي يميز ملحق العلامات الى معالج XAML هو وجود فتح وإغلاق الأقواس المتعرجة ({و}). يتم تعريف ملحق علامات بواسطة رمز مميز السلسلة التالي لفتح قوس متعرج مباشرة.

عند استخدامها في بناء جملة عنصر خاصية ، تظهر ملحق العلامات مرئياً كأي عنصر آخر يُستخدم لتوفير قيمة العنصر: تعريف عنصر XAML لمراجع فئة ملحق العلامات كعنصر ، محاطة داخل أقواس زاوية (<>).

ملحق علامات معرف من قبل XAML

يوجد العديد من ملحقات ترميز ليست مخصصة إلى WPFتطبيق من XAML، ولكنها بدلاً من تطبيقات لميزات XAMLكاللغة. يتم تعريف هذه الملحقات ترميز في النظام.Xaml كـ sembly كـ جزء من الخدمات عام XAML.NET. من الشائع استخدام ترميز، هذه ترميز ملحقات يتم التعريف عادة بواسطة x:بادئة في الاستخدام. MarkupExtensionفئة Base (أيضا تعريف في النظام.Xaml) يوفر نقش الذي يجب أن تستخدم الجميع الملحقات ترميز بترتيب إلى تكون معتمدة في.NET XAML القراء والكتاب XAML، بما في ذلك في WPF XAML.

  • تدعم x:Type الكائنType للنوع المسمى. تستخدم هذه باستمرار في الأنماط والقوالب. للمزيد من التفاصيل ، راجع س: نوع ملحق العلامات.

  • ينتج x:Static قيم ثابتة من وحدات نوع القيمة فى التعليمات البرمجية التي ليست نوع قيمة الخاصية مباشرة ولكن يمكن تقييمها إلى هذا النوع. للمزيد من التفاصيل ، راجع ملحق العلامات x: ثابت.

  • x:Nullتعينnullكـ قيمةXAMLخاصية ويمكن استخدامها أما لسمات أو خصائص العنصر قيم. للمزيد من التفاصيل ، راجع س: Null ملحق العلامات.

  • x:Arrayتوفير الدعم لإنشاء صفائف عام فيXAMLإسناد عناصر بناء الجملة للحالات الموقع توفير الدعم مجموعة ب WPF والتحكم في نماذج هو عن عمد غير مستخدمة. للمزيد من التفاصيل ، راجع س: صفيف ملحق العلامات.

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

x:بادئة يستخدم لتعيين مساحة الاسم XAML النموذجية XAMLمساحة الاسم في العنصر الجذر الخاص XAMLملف أو مستند.ل مثال، Visual Studioبدء قوالب لتطبيقات WPF XAMLالملف باستخدام هذا x:التعيين.يمكن اختيار بادئة مختلفة إلى ken في تعيين مساحة الاسم XAML الخاص بك، ولكن هذه الوثائق سوف يفترض بشكل افتراضي x:تعيين كوسيلة لتعريف تلك الوحدات التي جزء محدد من XAMLمساحة الاسم، كما مقابل إلى WPFمساحة الاسم أو مساحات الاسم XAML غير ذلك لا تتعلق إلى الغرض من تنفيذ إطار عمل محدد الافتراضي.

ملحق علامات محددة لـ WPF

ملحقات العلامات الأكثر شيوعاً المستخدمة في برمجة WPF هي تلك التي تدعم مراجع المورد (StaticResource و DynamicResource) ، وتلك التي تدعم ربط البيانات(Binding).

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

  • توفر DynamicResource قيمة من أجل الخاصية XAML بواسطة تأجيل تلك القيمة لتكون مرجع وقت التشغيل إلى مورد. يفرض مرجع موارد حيوية بحث جديد كل مرة تقوم تلك مثل مورد هو الوصول إليها ولديه حق الوصول إلى كائن الرسم البياني في وقت التشغيل. للحصول على رقم هو الوصول، DynamicResourceمفهوم هو معتمدة بخصائص التبعيه في نظام الخاصية WPF وتقييم التعبيرات. ولذلك لا يمكنك استخدام DynamicResourceل الجميع الخصائص الممكنة في WPF. للمزيد من التفاصيل ، راجع ملحق علامات DynamicResource.

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

  • توفر RelativeSource معلومات المصدر من أجلBinding الذى يتنقل عبر عدة علاقات محتملة في شجرة العنصر لوقت التشغيل. يوفر هذا مصدر متخصص لعمليات الربط التي يتم إنشاؤها في قوالب للاستخدام المتعدد أو يتم إنشاؤها في التعليمات البرمجية دون معرفة بالكامل بشجرة العناصر المحيطة. للمزيد من التفاصيل ، راجع النسبية ملحق توصيف المصدر.

  • تعمل TemplateBindingعلى تمكين قالب عنصر تحكم لاستخدام قيم للخصائص المقولبة التي تأتي من خصائص كائن معرف الطراز للفئة التي ستستخدم القالب. للمزيد من التفاصيل ، راجع ملحق علامات قالب ملزم. للحصول على المزيد من المعلومات حول الاستخدام العملي لـ TemplateBinding راجع Styling with ControlTemplates Sample.

  • ColorConvertedBitmapيعتمد المتقدمة نسبيا تصوير السيناريو. للمزيد من التفاصيل ، راجع ملحق علامات تحويل صورة نقطية اللون الى ملحق التوصيف (الامتداد).

  • ComponentResourceKey و ThemeDictionary دعم أوجه للبحث عن موارد، خاصة للموارد والسمات التي يتم حزم مع عناصر التحكم المخصصة. للحصول على مزيد من المعلومات، راجع ملحق علامات ComponentResourceKey، ملحق علامات ThemeDictionary، أو نظرة عامة على تأليف التحكم.

* فئات الامتداد

لكلا عامة XAML CLR والخاصة WPF ترميز الملحقات، سلوك كل ملحق ترميز هو التعرف إلى XAMLالمعالج من خلال *Extensionالفئة التي مشتقة من MarkupExtension، ويوفر تطبيق ProvideValueالأسلوب. يعرّف هذا الأسلوب على كل ملحق ما هو الكائن بمجرد أن يتم تقييم الملحق. الكائن الذى تم ارجاعه هو عادة مثيل منشأ أو يتم تعيينه باستخدام العديد من الرموز المميزة الممررة الى ملحق العلامات

على سبيل المثال، توفر الفئة StaticResourceExtension التطبيق السطحى للبحث فى الموارد الفعلية بحيث يرجع التنفيذ ProvideValue الخاص به الكائن المطلوب ، ويكون إدخال ذلك التطبيق سلسلة تستخدم للبحث عن الموارد بواسطة x:Key الخاص به. معظم تفصيل هذا التطبيق غير مهم إذا كنت تستخدم ملحق علامات موجود.

*Extensionنقش التسمية هو لتسهيل العمل و consهوtency. هو غير ضرورية من أجل معالج XAML لتعريف تلك الفئة كدعم لملحق علامات. كما يتضمن النظام.Xaml تعليمات البرمجة الأساسية الخاصة بك ويستخدمها تطبيق الخدمات XAML CLR طويلة لذلك، كل هو يجب أن يتم التعرف على ملحق علامات XAML هو لاشتقاق من MarkupExtensionويعتمد بناء الجملة البناء. يعرف WPF ترميز ملحق تمكين الفئات التي لا تتبع *Extensionتسمية النمط، على سبيل المثال Binding.

ملحق التفسير فئة من نص تهيئة

تتم ترجمة الرموز المتسلسلة التى تتبع ملحق العلامات ولا تزال داخل الأقواس من قبل معالج XAML بإحدى الطرق التالية:

  • تمثل الفاصلة دوماً الفاصل أو المحدد من رمز فردى. ولذلك يتعذر تمرير فاصلة قيمة حرفية ترميز الملحق دون escapement.

  • إذا لم تحتوى الرموز الفردية على أي علامات يساوي ، يتم التعامل مع كل رمز كمنشئ وسيطة. كل مُنشئ متغير يجب أن يتم توفيره كالنوع المتوقع من قبل ذلك التوقيع وبالترتيب الصحيح المتوقع من قبل ذلك التوقيع.

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

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

  • إذا احتوت الرموز الفردية المفصولة على علامات يساوي فان معالج XAML يستدعي أولاً المنشىء الافتراضي لملحق العلامات. ثم كل اسم = قيمة زوج يتم تفسيره على أنه اسم خاصية موجودة على ملحق العلامات ، وقيمة لتعيين هذه الخاصية.

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

تسلسلات الهروب وملحقات ترميز

تستخدم معالجة السمة فى معالج XAML الأقواس المتعرجة كمؤشرات لملحق العلامات. من الممكن أيضاً إنتاج قيمة السمة قوس متعرج عند الضرورة، عن طريق إدخال تسلسل هروب باستخدام قوس متعرج فارغ متبوعاً بمتعرج حرفي. انظر تسلسل الهروب {} / ملحق العلامات

تداخل ترميز ملحقات في استخدام XAML

يتم اعتماد تداخل العديد من ملحقات العلامات متعددة وكل ملحق علامات سيتم تقييمه بدقة أولاً, على سبيل المثال:

<Setter Property="Background"

Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />

بناء الجملة الخاص بعنصر ملحقات و خصائص ترميز

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

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

راجع أيضًا:

المرجع

ملحق علامات StaticResource

ربط ملحق علامات

ملحق علامات DynamicResource

س: نوع ملحق العلامات

المبادئ

نظرة عامة على XAML (WPF)

موارد أخرى

مساحة الاسم XAML (x:) ميزات اللغة

ملحقات XAML WPF