ملحقات ترميز XAML نظرة عامة
ملحقات ترميز تقنية XAML للحصول على القيمة الذي هو اﻷولى ولا وصول إلى كتابة تعيين و كائن الإنشاء من نوع نسخ مخصصة. استخدام سمة، تستخدم ملحقات ترميز تسلسل الأحرف المعروفة متعرج الفتح {إلى إدخال نطاق ملحق ترميز، وإغلاق متعرج }إلى. إنهاء عند استخدام الخدمات XAML إطار عمل.NET، يمكنك استخدم بعض الملحقات ترميز اللغة XAML المعرفة مسبقاً من تجميع النظام.Xaml. كما يمكنك إضافة فئة فرعية من MarkupExtensionالمعرفة في النظام.Xaml، الفئة، وتعريف ملحقات ترميز الخاصة بك. أو يمكنك استخدام ملحقات ترميز المعرفة بواسطة إطار عمل معينة إذا تم مسبقاً الرجوع إلى إطار عمل ذلك.
عندما يتم الوصول إليها استخدام ملحق علامات، يمكن لكاتب الكائن XAML تقديم الخدمات ل مخصص MarkupExtensionالفئة من خلال اتصال الخدمة يؤشر في MarkupExtension.ProvideValueالتجاوز. يمكن استخدام الخدمات إلى الحصول تشغيل سياق حول الاستخدام، قدرات معينة كاتب كائن سياق المخطط XAML، وهكذا.
يشمل هذا الموضوع على الأقسام التالية.
ملحق علامات معرف من قبل XAML
فئة الأساس MarkupExtension
تعريف "نوع" الدعم "لتخصيص ترميز ملحق
أنماط المنشئ ووسيطات موضعي لتخصيص ترميز ملحق
تسمى وسيطات مخصص ترميز ملحق
الوصول إلى سياق موفر الخدمة من تطبيق ملحق ترميز
استخدام عنصر خاصية من ملحق ترميز
attributing مخصص ترميز ملحق
إنشاء تسلسل استخدامات ملحق ترميز
ملحقات ترميز في اتجاه XAML عقدة
ملحق علامات معرف من قبل XAML
ملحقات العديد من ترميز المطبقة من قبل الخدمات XAML إطار عمل.NET ل XAML اللغة دعم. تتوافق مع الملحقات إلى أجزاء من المواصفات XAMLكـ اللغة. هذه عادة تكون قابلة للتعريف بواسطة بادئة x: في بناء الجملة كما هو ملاحظ من الاستخدامات الشائعة. الخدمات XAML إطار عمل.NET تطبيق لهذه العناصر لغة يستخدم نفس MarkupExtensionإسناد الفئة إلى يوفر تطبيق.
ملاحظة |
---|
x:بادئة هو المستخدمة لتعيين مساحة الاسم XAML النموذجية XAMLمساحة اسم اللغة في العنصر الجذر الخاص XAMLتطبيق أو مستند.على سبيل المثال، Visual Studioمشروع و قوالب الصفحات للإطارات المختلفة الخاصة ببدء XAMLالملف باستخدام هذا x:التعيين.يمكن اختيار بادئة مختلفة إلى ken في تعيين مساحة الاسم XAML الخاص بك، ولكن هذه الوثائق سوف يفترض بشكل افتراضي x:تعيين كوسيلة لتعريف تلك الوحدات التي جزء محدد من XAMLمساحة اسم اللغة، كما مقابل إلى الافتراضي لإطار عمل محدد XAML مساحة الاسم أو غير ذلك إجبارية CLR أو XML مساحات الاسم. |
س: نوع
تدعم x:Type الكائنType للنوع المسمى. Th هو وظيفة هو معظم المستخدمة بشكل متكرر في mechanهوms deferral التي تستخدم CLR الأساسي اكتب واكتب اشتقاق معرّف أو لقب تجميع. أنماط WPF و القوالب، و استخدام الخاص بهم من TargetTypeالخصائص، هي مثال محدد. للمزيد من التفاصيل ، راجع x: النوع ملحق علامات.
س: ثابت
ينتج x:Static قيم ثابتة من وحدات نوع القيمة فى التعليمات البرمجية التي ليست نوع قيمة الخاصية مباشرة ولكن يمكن تقييمها إلى هذا النوع. Th هو هو مفيدة لتعيين قيم exهوt الفعل كثوابت معروفة في تعريف نوع. للمزيد من التفاصيل ، راجع x: ملحق العلامات الثابت.
س: خالية (Null)
x:Nullتعينnullكـ قيمة للعضو XAML. استناداً إلى تصميم أنواع معينة أو تشغيل مفاهيم إطار عمل بقعة صغيرة، nullهو ليس دائماً القيمة افتراضية لخاصية، أو القيمة ضمنية تشغيل سمة سلسلة فارغ. للمزيد من التفاصيل ، راجع ملحق علاماتx:Null.
x: صفيف
x:Arrayتوفير الدعم لإنشاء صفائف عام في بناء جملة XAML، بالنسبة للحالات الموقع دعم مجموعة توفرها عناصر أساسية ونماذج التحكم هو عن عمد غير مستخدمة. للمزيد من التفاصيل ، راجع x: ملحق علامات صفيف. لاحظ أن ل XAML 2009 على وجه الخصوص، صفائف يتم الوصول إليها كـ الأوليات اللغة بدلاً من كـ ملحق. انظر مميزات لغة XAML 2009
س: مرجع
x:Referenceهو جزء من 2009 XAML، ملحق الأصلي لغة (2006) التعيين. x:Referenceيمثل مرجعاً إلى كائن آخر موجود في الرسم البياني كائن. أن كائن هو المعرف بواسطة به x:Name. للمزيد من التفاصيل ، راجع x: ملحق علامات مرجع.
x: غير ذلك بنيات
الأخرى x:بناء إلى تعتمد ميزات لغة XAML، لكنه لم يتم تطبيق هذه كملحقات ترميز. لمزيد من المعلومات، راجع مساحة اسم XAML مميزات اللغة.
فئة الأساس MarkupExtension
إلى تعريف ملحق علامات cusإلىm والتي يمكن أن تتفاعل مع تطبيقات الافتراضية XAML القراء والكتاب XAML في النظام.Xaml، اشتقاق فئة من مجرد MarkupExtensionclass. تحتوي فئة على أسلوب واحد إلى تجاوز ProvideValue. قد تحتاج أيضا إلى تعريف المنشئات إضافى ل دعم الوسيطات باستخدام ملحق ترميز، وتطابق خصائص قابلة للتعيين.
من خلال ProvideValue، ملحق علامات مخصصة له حق الوصول إلى سياق الخدمة تقارير البيئة الموقع ملحق ترميز هو طلبه بالفعل من قبل معالج XAML. في مسار تحميل هذا هو عادة XamlObjectWriter. في الحفظ مسار عادة ما يكون هذا هو XamlXmlWriter. كل تقرير خدمة السياق كسياق موفر خدمة الإنترنت XAML داخلية فئة الذي يقوم بتطبيق نمط موفر خدمة الإنترنت. للحصول على مزيد من المعلومات حول الخدمات متوفر و ما تمثل، راجع اكتب محوّلات وملحقات ترميز ل XAML.
يجب الفصل الدراسي ملحق ترميز باستخدام المستوى وصول العام؛ يجب أن يكون XAML المعالجات من إلى إنشاء مثيل لفئة الدعم بملحق ترميز بترتيب إلى استخدام الخدمات التي يقدمها.
تعريف "نوع" الدعم "لتخصيص ترميز ملحق
عند استخدام الخدمات XAML إطار عمل.NET أو الإطارات التي يتم الاعتماد تشغيل الخدمات XAML إطار عمل.NET، لديك خياران لكيفية إلى تسمية الفئة دعم ملحق ترميز. اسم النوع هو المتعلقة بكيفية كتاب الكائنات XAML محاولة الوصول إليها واستدعاء فئة دعم النسخ ملحق علامات عند قيامهم بمواجهة استخدام ملحق علامات في XAML. حدد أحد الخيارين التاليين:
اسم نوع الاسم أن تطابق تام باستخدام ترميز XAML الرمز المميز. على سبيل المثال، إلى يعتمد على {Collate ...}استخدام ملحق، اسم نوع دعم Collate.
قم بتسمية اسم النوع أن يكون الرمز المميز لسلسلة الاستخدام، بالإضافة إلى لاحقة Extension. على سبيل المثال، إلى يعتمد على {Collate ...}استخدام ملحق، اسم نوع دعم CollateExtension.
ترتيب البحث هو عن Extension-suffixed اسم الفئة أولاً، ثم قم بتسمية الفئة بدون Extensionلاحقة.
من منظور استخدام ترميز، متضمناً Extensionاللاحقة كجزء من الاستخدام هي قانونية. ومع ذلك، th هو يتصرف كما لو كان Extensionهو جزء من اسم الفئة وكائن XAML قد تفشل في كتاب حل فئة دعم ملحق علامات لهذا الاستخدام إذا لم للفئة الدعم بشكل صحيح Extensionلاحقة.
الدالة الإنشائية الافتراضي
يجب أن تعرض افتراضي عمومي لكافة الملحقات ترميز الدالة الإنشائية. الدالة الإنشائية افتراضي هو المطلوبة لأي حالة الموقع بدء كاتب كائن XAML ملحق ترميز من استخدام عنصر الكائن، واستخدام الدعم لعنصر الكائن هو توقع مقبول لملحق علامات، خاصة للتسلسل. ومع ذلك، يمكن تطبيق إلى ملحق علامات بدون على الدالة الإنشائية عام إذا كنت تريد دعم استخدامات السمة ملحق ترميز فقط.
إذا كان استخدام ملحق ترميز الخاصة بك بدون وسائط الافتراضي الدالة الإنشائية المطلوبة لدعم الاستخدام.
أنماط المنشئ ووسيطات موضعي لتخصيص ترميز ملحق
يجب أن تطابق construcإلىrs العامة لملحق علامات باستخدام وسيطة المطلوبة، إلى أوضاع الاستخدام المنتظر. بمعنى آخر، إذا كان ملحق ترميز هو مصمم لطلب إحدى الوسائط الموضعية كاستخدام صالح، يجب أن يعتمد على الدالة الإنشائية عام بواسطة معلمة إدخال واحد يأخذ وسيطة الموضعية.
على سبيل المثال، افترض أن Collateملحق ترميز هو مخصصة لدعم الوضع فقط الموقع توجد هو إحدى الوسائط المالوضعية يمثل الوضع الخاص به المعينة على أنها CollationModeالتعداد ثابت. في هذه الحالة، يجب أن يكون هناك على الدالة الإنشائية مع على الشكل التالي:
public Collate(CollationMode collationMode) {...}
في أساسى المستوى، الوسيطات التي تم تمريرها إلى ملحق علامات سلسلة، لأن يعاد توجيهها من ترميز. قد يعرض الجميع سلاسل الوسيطات الخاصة بك، و العمل مع إدخال عند ذلك المستوى. ومع ذلك، لديك إمكانية الوصول إلى بعض المعالجة يحدث قبل أن يتم تمرير الوسيطات ملحق ترميز إلى فئة الدعم.
يعمل المعالجة المفهوم كما لو كان الملحق العلامة هو تعيين كائن المراد إنشاؤه، ومن ثم قيمة العضو. كل تعيين الخاصية لتعيين هو تقييم مشابه لكيف يمكن تعيين عضو محدد تشغيل كائن تم إنشاؤه عند XAML هو تحليل. هناك ثلاثة اختلافات هامة:
كما هو موضح سابقا، ملحق علامات لا يلزم أن يكون لديك الافتراضي الدالة الإنشائية إلى أن يتم إنشاء مثيل في XAML. تأسيس الكائن الخاص به هو تأجيلها حتى يتم tokenized وسائطها المحتملة في بناء جملة النص وتقييم الوسيطات الموضعية أو المسماة الدالة الإنشائية المناسبة هو تسمى في ذلك الوقت.
يمكن أن تتداخل ملحقات ترميز. يتم تقييم ملحق ترميز الأعمق أول. وهكذا يمكن افتراض مثل هذا استخدام وتقوم بتعريف إحدى المعلمات البناء إلى تكون من نوع التي قد تتطلب محوّل القيمة مثل ملحق علامات إلى إنتاج.
تم عرضها اعتماد موردين تشغيل هذه المعالجة في السابق مثال. الكاتب كائن.NET Framework XAML الخدمات XAML سيعالج قائمة تعداد أسماء ثابتة إلى قيم المحسوبة في المستوى أصلي.
معالجة النصوص بناء الجملة ترميز يمكن الاعتماد معلمة ملحق الموضعية تشغيل محوّل نوع المقترن بالنوع في وسيطة البناء.
الوسائط تسمى الوسيطات الموضعية لأنه يطابق الترتيب الذي تتم مواجهة الرموز المميزة في الاستخدام ترتيب الموضعية التي الدالة الإنشائية قد تم تعيينها إلى معلمة. على سبيل المثال، خذ بعين الاعتبار توقيع الدالة الإنشائية التالية:
public Collate(CollationMode collationMode, object collateThis) {...}
يتوقع معالج XAML الثاني الموضعية الوسيطات لهذا الملحق ترميز. إذا كان هناك على استخدام {Collate AlphaUp,{x:Reference circularFile}}، ثم AlphaUpالرمز المميز هو المرسلة للمعلمة الأولى وتقييمها CollationModeالتعداد. النتيجة الداخلي x:Referenceهو المرسلة للمعلمة ثانية وتقييمها كالكائنات.
ضمن قواعد لبناء ملحق ترميز والمعالجة، والفاصلة هو المحدد بين الوسيطات، سواء كانت تلك الوسيطات الوسيطات الموضعية أو الوسيطات المسماة.
تكرار عدد أدوار من موضعي الوسيطات
إذا واجه كاتب كائن XAML استخدام ملحق علامات مع الوسائط الموضعية، وهناك عدة وسيطات المنشئ تأخذ عدد الوسيطات (تكرار عدد)، التي هو خطأ ليس بالضرورة. يعتمد سلوك تشغيل قابل لتخصيص XAML مخطط سياق إعداد، SupportMarkupExtensionsWithDuplicateArity. إذا SupportMarkupExtensionsWithDuplicateArityهو true، ثم لا يجب أن الإلقاء كاتب كائن XAML فقط لأسباب تتعلق بعدد الأدوار المتكررة. السلوك بعد هذه النقطة هو المعرفة لا حصرا. افتراض التصميم الأساسي هو وجود سياق المخطط نوع المعلومات متوفر للمعلمات محددة، ويمكنك محاولة قوالب واضحة تتوافق الترشيحات مكررة لمشاهدة توقيع قد يكون أفضل تطابق من ناحية. قد لا يزال يتم طرح استثناء إذا أي من التواقيع بتمرير الاختبارات المفروض بواسطة سياق المخطط معينة تلك التي تعمل تشغيل كاتب كائن XAML.
عن طريق الافتراضي، SupportMarkupExtensionsWithDuplicateArityهو falseفي المستند CLR إلى XamlSchemaContextلخدمات XAML إطار عمل.NET. وهكذا، شكل افتراضي XamlObjectWriterيطرح إذا واجه استخدام ملحق علامات الموقع يوجد هو عدد الأدوار المتكررة في المنشئات الخاصة بنوع النسخ.
تسمى وسيطات مخصص ترميز ملحق
ملحقات ترميز كـ محدد بواسطة XAML يمكن أيضا استخدام نموذج وسائط مسماة الاستخدام. في المستوى أول من tokenization، ينقسم بناء الجملة نص إلى الوسيطات. وجود علامة يساوي (=) في أي من الوسيطات وتعرف تلك وسيطة كوسيطة مسماة. أكثر من ذلك هو tokenized أدخلت وسيطة في ينشئ ازدواجًا القيمة = اسم. الاسم في هذه الحالة بأسماء خاصية قابلة للتعيين عامة بملحق ترميز الدعم نوع. إذا كنت ترغب في أن إلى دعم المسماة باستخدام وسيطة، يجب توفير هذه الخصائص العامة قابلة للتعيين. يمكن أن تكون الخصائص الخصائص الموروثة، لذا طويلة كـ تظل العامة.
الوصول إلى سياق موفر الخدمة من تطبيق ملحق ترميز
تماثل الخدمات متوفر لأي محوّل القيمة. الفرق هو في فقط كيف يتلقى كل محوّل القيمة سياق الخدمة. الوصول إلى الخدمات و يتم توثيق الخدمات متوفر في الموضوع اكتب محوّلات وملحقات ترميز ل XAML.
استخدام عنصر خاصية من ملحق ترميز
غالباً ما تم تصميم وحدات سيناريو للاستخدامات ملحق ترميز حول استخدام ملحق ترميز في استخدام السمة. ومع ذلك، فإنه هو أيضا من المحتمل إمكانية تعريف الفئة نسخة احتياطية لدعم استخدام العنصر الخاصية.
لدعم عنصر خاصية من استخدام ملحق ترميز الخاصة بك، قم بتعريف افتراضي عمومي الدالة الإنشائية. يجب أن يكون هذا الدالة الإنشائية مثيل الدالة الإنشائية ثابتة لا. Th هو هو المطلوبة لأن معالج XAML عليك بشكل عام باستدعاء المنشئ الافتراضي تشغيل أي عنصر كائن يقوم بمعالجة من ترميز، وترتيب هو يتضمن فئات ملحق ترميز كعناصر الكائن. لسيناريوهات متقدمة، يمكنك من المحتمل أن يكون تعريف المسارات التركيب غير افتراضي ل فئات؛ راجع توجيه x: FactoryMethod. ومع ذلك، يجب عدم استخدام هذه النقوش لأغراض ملحق ترميز لأنه يؤدي إلى العثور على استخدم نقش أكثر صعوبة كلاهما للمصممين والمستخدمين ترميز الأولية.
attributing مخصص ترميز ملحق
إلى دعم كل من بيئات التصميم وبعض السيناريوهات كاتب الكائن XAML، يجب أن سمة الفئة دعم ملحق ترميز مع العديد من السمات CLR. هذه السمات بالإبلاغ عن استخدام ملحق ترميز المطلوبة.
MarkupExtensionReturnTypeAttributeالتقاريرTypeمعلومات للكائن نوع الذيProvideValueإرجاع. بواسطة به توقيع خالص، ProvideValueتقوم بإرجاع Object. ولكن قد تحتاج العديد من العملاء العائد أكثر دقة نوع المعلومات. يتضمن هذا:
المصممين و IDEs، الذين قد تكون قادراً على توفير نوع-على علم بدعم استخدامات ترميز.
متقدمة لتطبيقات SetMarkupExtensionمعالجات تشغيل الفئات الهدف، والتي يمكن أن تعتمد تشغيل انعكاس لتحديد نوع الإرجاع إلى ملحق ترميز بدلاً من المنطق التفريعي تشغيل معروف محدد MarkupExtensionتطبيقات بواسطة.
إنشاء تسلسل استخدامات ملحق ترميز
عندما يعالج كاتب كائن XAML ترميز مكالمات وملحق ProvideValue، سياق الخاص به بمجرد أن يتم الحصول ترميز ملحق استمرت في التدفق عقدة XAML، وليس في كائن الرسم البياني. في الرسم إلى كائن، القيمة التي هو المحافظة. إذا كان لديك سيناريو التصميم أو أسباب غير ذلك ل persisting الأصلي استخدام ملحق ترميز في تحويل بياناتها في ملف الإخراج، يجب عليك تصميم البنية الأساسية الخاصة بك لتتبع الاستخدامات ملحق ترميز من الدفق عقدة XAML مسار تحميل. من المحتمل أن يكون قد إعادة إنشاء العناصر دفق عقدة من المسار تحميل وتشغيلها مرة أخرى لكتاب XAML للسلسلة في حفظ المسار، واستبدال القيمة في الموضع المناسب دفق عقدة.
ملحقات ترميز في اتجاه XAML عقدة
إذا كنت تعمل باستخدام دفق عقدة XAML تشغيل مسار تحميل، ترميز يظهر استخدام ملحق في الدفق عقدة ككائن.
في حالة استخدام ملحق ترميز باستخدام الوسيطات الموضعية، ثم استخدام ملحق ترميز هو تمثيله ككائن بدء مع القيمة تهيئة. كـ الدفق عقدة تمثيل نص متعثر، لما يلي:
StartObject(XamlTypeهو the ترميز ملحق's تعريف نوع, not its return نوع)
StartMember(اسم of theXamlMemberهو_InitializationText)
Value(value هو the positional arguments كـ a string including the intervening delimiters)
EndMember
EndObject
استخدام ملحق علامات باستخدام الوسيطات المسماة هو تمثيله ككائن مع الأعضاء الأسماء ذات الصلة، كل تعيين قيم سلسلة نصية.
فعلياً باستدعاء ProvideValueيتطلب التطبيق لملحق ترميز لسياق المخطط XAML لأنه يتطلب تعيين نوع وإنشاء مثيل ترميز الملحق.
إذا كنت تعمل باستخدام دفق عقدة XAML تشغيل حفظ مسار، بشكل عام ليس هناك شيء موجود في عرض الرسم بياني كائن يمكن إعلامك أن الكائن الأصل يوفرها ملحق علامات. الحالات التي تحتاج إلى أن تستمر استخدامات ملحق ترميز ل round-tripping أثناء التقاط تغييرات غير ذلك في رسم الكائن أيضا يجب أن devise التقنيات الخاصة بهم للمحافظة على دراية استخدام ملحق ترميز من XAML الأصلي إدخال. تشغيل سبيل المثال، لاستعادة استخدامات ملحق ترميز، قد تحتاج إلى العمل مع الدفق عقدة تشغيل الحفظ مسار إلى استعادة استخدامات ملحق ترميز، أو القيام ببعض الأنواع من دمج بين XAML الأصلي و XAML tripped بدوره. تستخدم بعض الإطارات مثل WPF أنواع المتوسطة (التعبيرات) إلى المساعدة تمثل الحالات الموقع استخدامات ملحق ترميز بتوفير قيم.