يستخدم Silverlight تعريفا محددا لمعرب xaml وبما أن هذا المعرب هو جزء من مكتبات الزبون العائدة لـ Silverlight لهذا قد يختلف تصرف الإعراب بينها وبين WPF والذي يمتلك أيضا تعريفا محددا وقد تكون الفروقات المذكورة هنا مفيدة عندما تقوم بتهجير كود xaml مكتوب أصلا من أجل WPF إلى Silverlight
الفروقات في معالجة xaml بين WPF و Silverlight
مجالات الأسماء
• يدعم سيلفرلايت http://schemas.microsoft.com/client/2007 إضافة إلى http://schemas.microsoft.com/client/2006/xaml/presentation كمجال الأسماء الزبون
• يضع سيلفرلايت القيود التالية على قيم xaml
o العنصر الجذري يجب دوما أن يحتوي على تعريف xaml الافتراضي
o أي تعريف افتراضي يجب أن يكون http://schemas.microsoft.com/client/2007 أو http://schemas.microsoft.com/client/2006/xaml/presentation أو مجال أسماء XPS
o أي تعريف غير افتراضي لا يستخدم احد المجالين المذكورين سابقا غير مسموح به
• يقدم سيلفرلايت القيود التالية على تنظيم المجمعات ومجالات الأسماء من أجل قيم xaml
o يجب على المجمع إما أن يكون mscorlib أو أن يكون اسم المجمع في ملف xap فلا يمكن أن يكون المجمع ملف DLL من تنصيب سيلفرلايت الأساسي ولا حتى مكتبة خارجية كلية
o لايمكن أن يتضمن اسم المكتبة في نهايتها .dll
البانيات
• الباني الوحيد المدعوم من سيلفرلايت هو xml:lang
• البانيات x: المدعومة من قبل سيلفرلايت هي x:Null و x:Name و x:Key و x:Class
• بانيات sys: المدعومة هي sys:Double و sys:String و sys:int32
• باني mc: الوحيد المدعوم هو mc:Ignorable
لغة xaml الجوهرية
• هناك دعم محدود لـ Markup Extensions في سيلفرلايت والـ Markup Extensions المدعومة هي x:Type و x:Null و StaticResource و Binding و TemplateBindin g ولا يوجد Markup Extensions عامة إلا فيما يتعلق بـ Binding مما يعني أنه لا يوجد Markup Extensions مخصصة
• فيما عدا Binding تستخدم الـ Markup Extensions بصيغة الخصائص attributes فلا يوجد صيغة لعنصر الغرض هنا ومحددات البانيات لا يمكن تسميتها فمثلا {StaticResource aKey} صحيحة ولكن {StaticResource ResourceKey=aKey} خاطئة
• لا تدعم سيلفرلايت إضافة extension إلى نهاية اسم Markup Extension كاستخدام بديل فمثلا {x:Null} صحيح بينما {x:NullExtension} خاطئ
• في شروط تصرفات xaml هناك دعم محدود في سيلفرلايت لعناصر الأغراض التي ليست DependencyObject
o عناصر الأغراض التي ليست DependencyObject لا تدعم x:Name
o الفئات التالية التي ليست DependencyObject مدعومة كالفئات المعرفة في المجمع والتي تم تحميلها مع التطبيق وفئات sys: هي Color و FontFamily
• الخاصية Name مدعومة من قبل جميع الفئات الفرعية في سيلفرلايت وتعامل مثل x:Name وفي الفئات الفرعية FrameworkElement المعرب سيعدل قيمة الخاصية Name وحتى إن لم يكن لها رابط عام في الكود
• العناصر في ResourceDicitonary في سيلفرلايت ربما يكون لها x:Name بدلا عن أو إضافة إلى x:Key وإن لم تكن x:Key محددة يستخدم x:Name بدلا عنها
• باستثناء TextBlock و Run عناصر الأغراض في سيلفرلايت لايمكن أن تحتوي على عقد نص xml كطريقة لتعريف نص المحتويات للغرض فمثلا <Button>Hello World</Button> غير مسموح به
التصرفات الأخرى
• الـ Framework Template وفئاتها الفرعية تدعم الخاصية content حتى ولوم لم يكن لها الخاصية Content
• UserControl.Content هي خاصية محمية على العكس من الخصائص العامة وكتصرف عام يمكن لمعرب سيلفرلايت أن يضبط هذه المحتويات طالما أن قيمة x:Class تم تحديدها
