معالجة المسافة الفاصلة المعالجة في XAML

Extensible Application Markup Language (XAML) تمتلك قواعد لغوية تحدد كيف تتم معالجة المسافات الخالية عن طريق تنفيذ المعالج XAML هذا الموضوع يحدد هذه القواعد اللغوية ، فضلا عن معالجة مسافات خالية إضافية عن طريق تنفيذ Windows Presentation Foundation (WPF) للمعالج XAML و الكاتب XAML للتسلسل.

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

  • تعريف الفراغات.

  • تطبيع المسافات الخالية.

  • المسافات الخالية في النص الداخلية ، وسلسلة البدائيون

  • الإحتفاظ بالمسافات الخالية.

  • الأحرف الشرق آسيوية.

  • نماذج محتوى النص و المسافات الخالية.

تعريف الفراغات.

متوافقة مع XML ، المسافات الخالية فى XAML هى المسافة ، تغذية ، والتبويب. هذا يطابق قيم Unicode 0020، 00A و 0009.

تطبيع المسافات الخالية.

افتراضيا تطبيع المسافات الخالية التالية يحدث عندما المعالج XAML يعالج ملف XAML.

  1. تتم إزالة أحرف التغذية بين الأحرف الشرق اسيوية. انظر قسم الأحرف الشرق آسيوية إلى المزيد من الهبوط في هذا الموضوع للاطلاع على تعريف "الأحرف شرق آسيا"

  2. كل المسافات الخالية (الفضاء ، تغذية ، علامة التبويب) يتم تحويلها إلى مسافات.

  3. جميع المسافات المتتالية يتم استبدالها بمسافة واحدة.

  4. المسافة التابعة مباشرة لبداية الوسم التالية تتم ازالتها.

  5. المسافة السابقة مباشرة لنهاية الوسم تتم ازالتها.

"الافتراضى" تطابق الحالة المعرفة القيمة الافتراضية للسمة xml:space

المسافات الخالية في النص الداخلية ، وسلسلة البدائيون

قواعد التطبيع الموجود بالاعلى تطبق على النص الداخلى فى عناصر XAML بعد التطبيع، المعالج XAML سيقوم بتحويل النص الداخلى لنوع مناسب كالتالى:

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

  • إذا كان نوع من هذه الممتلكات هي عبارة عن مجموعة ، والنص الداخلي متجاورة (لا يوجد به عنصر متدخل) ، يتم تحليل النص الداخلية باعتبارها واحدة من String. اذا كان نوع المجموعة لا يقبل String ، يؤدى ذلك ايضا إلى خطأ فى وقت الترجمة.

  • إذا كان نوع من الممتلكات هو Object يتم تحليل النص الداخلية باعتبارها String واحدة. إذا كان هناك عناصر متداخلة به ،هذا يؤدي إلى خطأ ترجمة الوقت ، لأن النوع Object يعني كائن وحيد (String او الاثنين معا).

  • إذا كان نوع من هذه الممتلكات هي عبارة عن مجموعة ، والنص الداخلي ليست متجاورة ، ثم يتم تحويل الفرعية الأولى إلى String وأضيفت كبند مجموعة ، يتم إضافة عنصر التدخل كبند مجموعة ، وأخيرا سلسلة فرعية زائدة (إن وجدت) تضاف إلى مجموعة String كنوع ثالث.

الإحتفاظ بالمسافات الخالية.

هناك أساليب عدة للحفاظ على المسافات الخالية في المصدر XAML لعرضه في العرض النهائى الذى لا يتأثر بالمعالج XAML لتطبيع المسافات الخالية.

xml:مسافة="احتفاظ": حدد هذه السمة على مستوى العنصر حيث هو المطلوب الحفاظ على المسافات الخالية. لاحظ أن هذا سوف يحتفظ بجميع المسافات الخالية ، بما في ذلك الأماكن التي يمكن أن تضاف من قبل تطبيقات رمز التعديل إلى "pretty-print" محاذاة العناصر باعتبارها بديهية تداخل بصريا ، ولكن إذا كانت تلك المساحات تجعل من جديد مسألة من طراز المحتوى للعنصر التي تحتوي عليه. تحديد xml:space="preserve" فى مستوى الجذر غير محبب ، لأن غالبية نماذج الكائن لا نعتبر المسافات الخالية طريقة واحدة كبيرة أو شىء آخر. و من افضل الممارسات ان تحدد فقط السمة على مستوى العنصر الذى يقدم المسافة الخالية فى خلال جملة ، او مجموعة من المسافات الخالية.

الكيانات وعدم كسر المسافات : XAML تدعم وضع اى كيان Unicode فى نموذج كائن كتابى يمكن استخدام كيان مخصص مثل مسافات خالية غير منقسمة (  in UTF-8 encoding). يمكنك أيضا استخدام عناصر التحكم التي تدعم النص المنسق غير منقسمة المسافات. يجب أن تكون حذرا إذا كنت تستخدم كيانات لمحاكاة خصائص التخطيط مثل تثليم ، لأنه لن تختلف في وقت التشغيل الناتج من الكيانات على أكبر عدد من العوامل من شأنه أن تخطط المرافق العامة ، مثل الاستخدام السليم للوحات والهوامش . على سبيل المثال ، يتم تعيين الكيانات على الخطوط ويمكن تغيير حجم الاستجابة لاختيار الخط المستخدم.

الأحرف الشرق آسيوية.

"الأحرف الشرق آسيوية" تعرف بأنه مجموعة من Unicode نطاقات حروف U+20000 to U+2FFFD and U+30000 to U+3FFFD. وهذا هو أيضا فرعية يشار إليها أحيانا إلى "CJK ideographs". لمزيد من المعلومات ، انظر http://www.unicode.org.

نماذج محتوى النص و المسافات الخالية.

في الواقع ، الحفاظ المسافات الخالية هو فقط الإهتمام لمجموعة فرعية من جميع نماذج المحتوى الممكنة. وتتألف هذا الفرعية من نماذج المحتوى الذي يمكن أن نوع واحد من String فى شكل معين ، مجموعة String مكرسة ، او خليط من String و الانواع الاخرى فى IList او مجموعة ICollection<T>.

مسافة بيضاء ونص طراز المحتوى في WPF

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

حتى لنماذج المحتوى التى يمكن ان تأخذ جمل ، السلوك الإفتراضى فى تلك نماذج المحتوى هو ان المسافات الخالية التى لم يتم التعامل معها ، لا تأخذ فى الإعتبار. على سبيل المثال ، ListBox ، تأخذ IList ، لكن المسافات الخالية (مثل التغذية بين كل ListBoxItem) لم يتم الحفاظ عليها و لا تقدم ، في الواقع ، ومحاولة استخدام التغذية والفواصل بين الجمل للبنود ListBoxItem لا تعمل اطلاقا ، الجمل المفصولة بتغذية السطور تعامل كجملة واحدة و بند واحد .

هذه المجموعات التي لا تعالج المسافات الخالية وعادة ما تكون جزءا من تدفق نموذج الوثيقة المجموعة الرئيسية التي تدعم سلوك الحفاظ على المسافات الخالية هو InlineCollection. يتم تعريف هذه الفئة مع مجموعة WhitespaceSignificantCollectionAttribute ، عندما يتم العثور على هذه السمة ، المعالج XAML سوف يتعامل مع المسافات الخالية فى المجموعة. ان المزيج من xml:space="preserve" و المسافات الخالية خلال رمز WhitespaceSignificantCollectionAttribute المشترك هو ان جميع المسافات الخالية يتم الاحتفاظ بها. مزيج من xml:space="default" و المسافات الخالية فى WhitespaceSignificantCollectionAttribute وسوف يؤدي إلى تطبيع المسافات الخالية الأولية الموصوفة سابقا ، والتي سوف تترك مسافة واحدة في مواقف معينة ، ويتم الاحتفاظ بتلك المسافات الخالية والمقدمة. السلوك المرغوب فيه متروك لكم ، و ينبغى ان تستخدم xml:space لإختيار السلوك المطلوب.

أيضا ، عناصر مضمنة على يقين من أن تدل على فاصل كتابى في تدفق نموذج الوثيقة ينبغي أن تعمد عدم إدخال مسافة إضافية حتى في جمع كبير من المسافات الخالية. على سبيل المثال ، العنصر LineBreak له نفس الهدف مثل <BR/> فى HTML وقراءة العلامات في LineBreak منفصلة عن اى نص لاحق من قبل تأليف التغذية لا ينبغي أن يكون تطبيع هذه التغذية لتصبح مسافة رائدة في سطر لاحق. لتمكين هذا السلوك ، تعريف فئة العنصر LineBreak تطبق TrimSurroundingWhitespaceAttribute التى تترجم عن طريق المعالج XAML لقصد المسافة الخالية المحيطة LineBreakتحذف.

راجع أيضًا:

المرجع

وحدات الأحرف XML وXAML

xml: معالجة المساحة في XAML

المبادئ

نظرة عامة حول XAML