تعلم Xaml (2) - سي شارب - مقـــالات - Top Coder
Welcome to our Site
الدخــول Or تسجـــيل
السبت
2016-12-10
5:36 PM
تسجــــيل | دخـــول
الرئيسية » مقالات » سي شارب

تعلم Xaml (2)
تعلم Xaml  (2)

مقدمة
هذه المقاله استكمالاً لسلسلة مقالات عن XAML , وهذا رابط بالمقاله السابقه

التعامل مع الخصائص البسيطة:
اصبح معروفا لدينا ان الواصفات في العنصر تقوم بتعيين الخصائص في الكائن المقابل في الدوت نت.
فلو اردنا إنشاء زر يحتوي على النص "This is a button" ويكون لون الخط احمر وخلفيته زرقاء ، فإننا نكتب:
 
 
ويمكن استخدام اي واصفة في XAML ، بشرط ان يكون لها خاصية مقابلة تنتمي إلى فئة الكائن في الدوت نت، وسوف تعترض XAML على اي واصفة لا تكون كذلك.

يمكننا ايضاً عمل نفس الزر السابق من خلال كود C# بالشكل التالي:
 
محولات الأنواع:
تكون القيمة الواصفة دائما عبارة عن نص ، و المشكلة ان نوع الخصائص المقابلة قد يكون من اي نوع ، ففي الزر السابق ، سوف نجد ان الخاصية Background من النوع Brush .
وحتى تستطيع XAML تعيين مثل هذه الخصائص فلا بد لها اولا ان تقوم بتحويل القيمة النصية إلى قيمة مكافئة من نوع الخاصية المقابلة.
عملية التحويل تتم من خلال محولات النوع (TypeConverters) التي تقوم اساسا بتحويل قيمة من نوع إلى آخر. مثلا المحول BrushConverter مختص بتحويل القيمة من وإلى كائن من النوع Brush.

إذا لم يستطع المحول تحويل القيمة ، او إذا لم تستطع XAML تحديد المحول المرافق للخاصية (او نوعها) فإنها تقوم بتوليد خطأ وتتوقف العملية.

لاحظ ايضاً ان XAML متحسسة لحالة الأحرف فيما يتعلق باسماء العناصر والواصفات، بينما لا تكون متحسسة لحالة الأحرف مع القيم ، لإن محولات الأنواع يمكنها تحويل القيمة النصية بغض النظر عن حالة الأحرف فيها.
التعامل مع الخصائص المركبة
هناك بعض الخصائص التي لا يمكن تعيينها من خلال الواصفات ، بسبب ان قيمتها قد تمثل كائن او عدة كائنات يصعب التعبير عنها بنص بسيط.
لهذا وفرت XAML صيغة اخرى لتعيين الخصائص في الكائنات تسمى بـ "صيغة العنصر الخاصية" (Property Element Syntax) ، وفيها نقوم بإضافة عنصر XML يمثل الخاصية ويكون اسمه على شكل وينتهي بـ ، ويتم تحديد القيمة او القيم المطلوبة داخل هذا العنصر.
مثلا لو اردنا إنشاء نفس الزر السابق باستخدام العنصر الخاصية فإننا نكتب:
 
 
لاحظ انه من خلال "العنصر الخاصية" نستطيع ان نحدد او نخصص نوع الكائن الذي يمثل القيمة واي خصائص اخرى بداخله.
فلو اردنا ان نجعل الزر محتويا على صورة بدل النص فإننا سوف نقوم بإضافة عنصر يمثل الصورة بداخل الخاصية:
 
 
و لو اردنا استخدام Brush من نوع LinearGradientBrush لكي نجعل لون الخلفية بلون متدرج فإننا سوف نستخدم :
 
 
ومن اجل ان يعمل هذا التدرج بشكل سليم، فلا بد من تحديد الألوان في LinearGradientBrush ، من خلال تعبئة الخاصية GradientStops والتي تمثل كولكشن كائنات من النوع GradientStop، ومثل هذه الخاصية يمكن تعيينها في XAML من خلال "العنصر الخاصية" فقط:
 
 
يمكننا بعد ذلك إضافة الكائنات GradientStop وتحديد الألوان المطلوبة :
 
 
يكون الكود المكافئ بهذا الشكل:
 
 
يمكننا ايضاً مع بعض الخصائص (التي يكون لها set) تحديد نوع الكولكشن المستخدم :
 
خصائص الأحتواء:
تسمح XAML لأي فئة بإن تحدد احدى الخصائص فيها كخاصية احتواء افتراضية، واي عنصر من تلك الفئة يمكن ان يحتوي على عنصر او عدة عناصر بداخله مباشرة بدون الحاجة إلى تحديد عنصر الخاصية.
مثلا خاصية الأحتواء الأفتراضية في الزر هي الخاصية Content لذا يمكننا عمل نفس الزر السابق بدون تحديد هذه الخاصية :
 
 
ايضا خاصية الأحتواء الأفتراضية في LinearGradientBrush هي GradientStops فيمكننا إنشاء التدرج السابق بالشكل التالي:
 
تعددت الطرق والنتيجة واحدة:
مما سبق ، يمكن تعيين اي خاصية باكثر من طريقة ، مثلا من اجل تعيين الخاصية Content في الزر فإننا نستخدم اي طريقة من التالي
 
 
تابعوا باقي المقالات الخاصة بنفس الموضوع لاحقاً
المصـــــــــــدر
 Written by :  Mohammed Mahmoud
الفئة: سي شارب | أضاف: ham_mody2000 (2013-05-27 3:51 PM)
مشاهده: 1893 | الترتيب: 0.0/0


أترك تعليقك من خلال حسابك على الفيس بوك

تعليقات مشتركي الموقع

مجموع المقالات: 0
إضافة تعليق يستطيع فقط المستخدمون المسجلون
[ التسجيل | دخول ]
طريقة الدخول
بحث
Our Facebook community

تم إطلاق صفحة توب كودر على الفيس بوك

Advertisment
الأحـــدث
hitstatus
Copyright Mohammed Mahmoud © 2016
إنشاء موقع مجاني с uCoz