تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس الخامس والخمسون - مقدمة إلى Wpf
#1
كاتب الموضوع : أحمد جمال

بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .

WPF :

Windows Presentation Foundation أو ما يعرف اختصاراً باسم WPF هي تقنية رسومية جديدة من مايكروسوفت بدأت مع .net framework 3.0 تعتمد على ما يعرف باسم Extensible Application Markup Language واختصاراً باسم XAML ، وهي تعتبر الجيل الجديد من تقنيات مايكروسوفت في الواجهات المرئية بعد Windows Forms و GDI+ و DirectX APIs و Windows Media Player API's للواجهات والرسومات ثنائية وثلاثية الأبعاد والفيديو على الترتيب .

أما مع WPF فقد اصبح بامكانك التحكم بجميع هذه النقاط ابتداء من تصميم الواجهات وانتهاء بالتصميم الثلاثي الأبعاد والفيديو من خلالها .


XAML :
تهدف XAML إلى الفصل بين الكود والتصميم بصورة كاملة مثلما كان يحدث في صفحات ASP.net ، حيث تعد XAML شبيهة ب HTML الذي تستخدمه لتصميم صفحاتك - مع الفارق - حيث أن ال XAML أقرب إلى نظام لغات البرمجة حيث يحتوي على فئات وخصائص ... الخ .


Microsoft Expression
سابقاً ، كان التصميم عبارة عن مجموعة من عمليات الرسوميات ، يتم تعريفها بطريقة ما في الفيجوال ستوديو ، في حين تظل مجرد صور في برنامج لتحرير الصور مثل photoshop وبطريقة أخرى في برنامج مثل Adobe Flash .. تخيل الآن ان لديك برنامج متخصص في الرسوميات ينتج الرسومات بصورة يمكن فهمها في بيئة التطوير الخاصة بك ؟


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

هناك عدة اصدارات من هذه البرامج منها المخصص للويب ومنها الرسومي الشبيه بالفوتوشوب او الشبيه بالفلاش . لكننا نتوسع في شرح هذا البرنامج ، ولكن ضع هذا البرنامج في اعتبارك طيلة فترة عملنا على ال WPF حيث يمكن انتاج XAML الذي نستخدمه من خلاله ، يمكنك تحميل نسخة من هنا :
http://www.microsoft.com/expression/products/overview.aspx?key=blend

كانت هذه مقدمة سريعة جداً ، سنعود لنبدء عالم ال WPF من البداية .
}}}
تم الشكر بواسطة:
#2
أنواع تطبيقات WPF :

تطبيق WPF ليس مجرد تطبيق تقليدي فقط ، بل يمكن ان يظهر على أكثر من شكل ، سنحاول التعرف على هذه الأشكال الآن .

1- Traditional Desktop Applications :
النوع الأكثر شيوعاً ، تطبيق تقليدي exe ، ال WPF مجرد طريقة لتحسين المظهر والواجهات وخلافه .


2- Navigation-Based :
يمكنك من خلال WPF اختيار تطبيقك ليكون تطبيق عادي ولكن لديه خصائص المتصفح لديك Forward و Backward حيث يمكن
للمستخدم التنقل بين صفحات تحددها أنت في pages ، لا جديد في كونها تطبيق عادي سوى مبدئ التصفح .

3- XBAP Applications :
ميزة جديدة من مميزات WPF لبناء تطبيق يعمل من خلال المتصفح ، شبيه جداً بمبدأ ال JAVA Applet ، حيث يتم الوصول إليه من خلال عنوان URL ، يقوم بتحميل XBAP application في ال local machine ويقوم بتشغيلها .


4- Silverlight Applications:
من خلال WPF ايضاً يمكنك بناء تطبيقات يتم استضافتها من خلال المتصفح مباشرة ، شديدة الشبه ب embeded flash الموجود في صفحات الإنترنت المختلفة ، يتمتع ال Silverlight بامكانيات غنية في المظهر والتنفيذ على حد سواء .
}}}
تم الشكر بواسطة:
#3
محتويات الفئة WPF :

System.Windows : العناصر الأساسية لل WPF .
System.Windows.Controls : تحتوي على مجموعة من العناصر اللازمة لبناء تطبيقك مثل القوائم وال Tool Tips وخلافه .
System.Windows.Markup : الفئات الخاصة بفهم وتنفيذ صيغ XAML .
System.Windows.Media : الفئات الخاصة بالتعامل مع الفيديو والصور المتحركة والتصاميم 3D .
System.Windows.Navigation: الفئات الخاصة بالتعامل مع النوع Navigation-Based من التطبيقات الذي وضحناه سابقاً .
System.Windows.Shapes : مجموعة من الأدوات لعمليات التصاميم 2D .
}}}
تم الشكر بواسطة:
#4
تطبيقك الأول في عالم WPF .

يمكننا بناء تطبيقات WPF بدون الاعتماد على XAML ، ولكننا سنتجاوز هذه المرحلة لنتعلم مباشرة كيفية بناء تطبيقات WPF باستخدام XAML .
لو كنت قد جربت سابقاً التعامل مع HTML فأنت ستكون قد اجتزت نصف المرحلة ، ولمن هذه هي المرة الأولى بالنسبة لهم فقد كانت ال HTML تعتمد على Tags بالشكل التالي مثلاً :


كود :
[color=#008000]<a href=[COLOR=#0000ff]"Ahmed.html"[/color]>[/COLOR]Ahmed[color=#008000]</a>[/color]

الكود السابق يعني رابط Link يشير إلى الصفحة Ahmed.html في حين ان النص المعروض للمستخدم هو Ahmed .
هناك طريقة أخرى لاكواد ال HTML بالشكل التالي مثلاً :

كود :
[color=#800080]<img src=[COLOR=#0000ff]"ahmed.jpg"[/color] alt=[color=#0000ff]"ahmed picture"[/color] border=[color=#0000ff]"0"[/color] />[/COLOR]


هذا الكود يعني صورة لديها ToolTip وليس لها حدود ، لو لاحظت فليس لها Tag نهاية .

لو كنت ترغب بمعرفة المزيد عن HTML يمكنك البدء من هنا :
http://www.html4arab.com/
ستكون معلومات سريعة + لن تأخذ اكثر من ساعتين في تعلمه + سيكون مفيداً جداً لك في تطوير المواقع + حتى مع استخدام ادوات مثل DreamWaver أو الفيجوال ستوديو في تطبيقاتك فمن المفضل التعرف عليها - شخصياً استخدم لبناء مواقعي ال Notepad في الغالب - .


المهم ، هذا هو كل ما لدينا في عالم XAML ، بنفس الطريقة سيتم توصيف الأدوات الخاصة بنا ، فهذا زر أمر مثلاً :

كود :
[FONT=Tahoma]<Button Height="80" Width="100">
ClickMe
</Button>[/FONT]


وهذا النوع الآخر :

كود :
[FONT=Tahoma]<Button Height="80" Width="100" Content="ClickMe"/>[/FONT]


يمكن ان يكون لدينا زر أمر يحتوي بداخلة على عناصر أخرى ، هذا مثال :


كود :
<Button Height = "80" Width = "100">
<Button.Content>
<ScrollBar Width = "75" Height = "40"/>
</Button.Content>
</Button>


لكن المثال التالي خاطئ نظراً لإن ال Scroll ليست مشتقة من الفئة ContentControl!


كود :
<ScrollBar Height = "80" Width = "100">
<Button Width = "75" Height = "40"/>
</ScrollBar >


الآن هذه مقدمة مناسبة عن هذا العالم ، نبدأ في التطبيق في الدرس التالي ....
}}}
تم الشكر بواسطة:
#5
الآن افتح Visual Studio ، قم باختيار انشاء New Project ، قم باختيار WPF Application بالشكل التالي :


قم بوضع زر أمر ومربع نص ، ثم لاحظ شاشة ال XAML ، بالتحديد قم بالتركيز على الجزء التالي :


ستجد انه كما ذكرنا بالفعل ،قام بعمل انشاء كود XAML لكافة عناصر الفورم ووضعها داخل العنصر Window ثم Grid ، ايضاً تجد بعض العناصر الاضافية في حالة التصميم ، الآن اصبح بامكانك كتابة كود XAML او الاعتماد على التصميم كما تفعل مع تطبيقات الويب - إن كنت مبرمج ويب - .

سنحاول الآن التعديل في خصائص Window لتغيير عنوان الفورم ، قم بمسح الخاصية Title ، ثم اذهب إلى نهاية الوسم وابدأ بكتابة مسافة ومن ثم نقوم باختيار Title ومن ثم نكتب ="WPF Example" بالشكل التالي مثلاً :


سيكون الكود الاجمالي XAML بالشكل التالي :

كود :
[COLOR=#000080]<Window x:Class="WpfApplication2.Window1"
xmlns=[color=#0000ff]"http://schemas.microsoft.com/winfx/2006/xaml/presentation"[/color]
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height=[color=#0000ff]"300"[/color] Width=[color=#0000ff]"300"[/color] Title=[color=#0000ff]"WPF Example"[/color]>[/COLOR]
[color=#000080]<Grid>[/color]
[color=#000080]<Button Height=[COLOR=#0000ff]"23"[/color] Margin=[color=#0000ff]"99,0,105,91"[/color] Name=[color=#0000ff]"button1"[/color] VerticalAlignment=[color=#0000ff]"Bottom"[/color] Click=[color=#0000ff]"button1_Click"[/color]>[/COLOR]Button[color=#000080]</Button>[/color]
[color=#000080]<TextBox Height=[COLOR=#0000ff]"23"[/color] Margin=[color=#0000ff]"77,80,81,0"[/color] Name=[color=#0000ff]"textBox1"[/color] VerticalAlignment=[color=#0000ff]"Top"[/color] />[/COLOR]
[color=#000080]</Grid>[/color]
[color=#000080]</Window>[/color]


لاحظ ان بامكانك التحكم في جميع الخصائص لكل الأدوات بنفس الطريقة .
الآن جرب كتابة أمر بالضغط على زر الأمر مرتين ، ستجد نافذة مستقلة للكود غير تلك التي للتصميم ، اكتب فيها الأمر التالي مثلاً :
C#:

كود :
private void button1_Click(object sender, RoutedEventArgs e)
{
textBox1.Text = "Welcome WPF";
}

vb.net:

كود :
Private Sub button1_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
textBox1.Text = "Welcome WPF"
End Sub


والناتج :


ايضاً يمكنك كتابة الكود في نفس شاشة التصميم بالشكل التالي :

كود :
[color=#000080]<x:Code>[/color]
[COLOR=#000080]<![CDATA[
void CodeExample(object sender, RoutedEventArgs e)
{
MessageBox.Show("ahmed");
}

]]>[/COLOR]
[color=#000080]</x:Code>[/color]


مع جعل اسم الدالة على الاسم الذي اخترته في الحدث Click لزر الأمر بالشكل التالي مثلاً :

كود :
[color=#000080]<Button Height=[COLOR=#0000ff]"23"[/color] Margin=[color=#0000ff]"99,0,105,91"[/color] Name=[color=#0000ff]"button1"[/color] VerticalAlignment=[color=#0000ff]"Bottom"[/color] Click=[color=#0000ff]"CodeExample"[/color]>[/COLOR]Button[color=#000080]</Button>[/color]


ونفس النظام بالنسبة ل VB.net .
ايضاً أثناء كتابتك للحدث Click يمكنك من خلال Visual Studio انشاء حدث جديد مباشرة ...
}}}
تم الشكر بواسطة:
#6
خاتمة الجزء الأول - نقاط سريعة - :

- لو كنت تبحث عن معرفة ال Syntax الخاص ب XAML بتوسع يمكنك البدء من هنا :
http://msdn.microsoft.com/en-us/library/ms788723.aspx


- لاعتماد أحداث ال Form_Load وخلافه يمكنك اضافتها ل Window بالشكل التالي مثلاً :

كود :
Loaded="Window_Loaded" Closed="Window_Closed"


ونفس الأمر مع جميع أحداث وخصائص كل الأدوات .

- لو استمررت بهذه الطريقة مع WPF فأنت تعطي لنفسك المزيد من التحكم بالمظهر ، لكن لو كنت تريد جمال الواجهات وخلافه فيمكنك البدء مع Microsoft Expression Blend من ضمن مجموعة Microsoft Expression ، هذه صورة للواجهة الرئيسية مثلاً :





ناتج تصميمك سيكون XAML يمكنك وضعه في ال Visual Studio مباشرة .

- لتجربة مثال خطوة بخطوة على هذه العملية راجع الرابط التالي :
http://www.codeproject.com/KB/WPF/DotNet_XAML.aspx

ربما أعود هنا لأشرح الخطوات بواحدة بواحدة ، ولكن ليس الآن .

إلى هنا نكون قد انتهينا من محتويات المجموعة الأولى ، في المجموعة القادمة من الدروس سنتعرف على WPF Controls .

والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .
}}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم