TOC

This article is currently in the process of being translated into Arabic (~99% done).

About WPF:

WPF vs. WinForms

في المقطع السابق, تكلمنا عن wpf وقليلاً عن windows forms . في هذا المقطع سأحاول المقارنة بين النوعين , حيث أنهما يخدمان بشكل كبير نفس الغرض إلا أنهيوجد الكثير من الفروقات بينها . إذا لم تكن قد استخدمت windows forms من قبل,وخاصة إذا كانت wpf هي أول مااستخدمت لعمل الواجهات الرسومية, فإنه بإمكانك تجاوز هذا الفصل, ولكن إذا كنت مهتماً بالفرقات فتابع القراءة.

الاختلاف الوحيد الأكثر أهمية بين WinForms و WPF هو بينما WinForms ببساطة طبقة فوق عناصر تحكم Windows القياسية (مثل TextBox) ، فإن WPF مبني من الصفر ولا يعتمد على عناصر تحكم Windows القياسية في جميع المواقف تقريبًا. قد يبدو هذا اختلافًا دقيقًا ، ولكنه في الحقيقة ليس كذلك ، وهو ما ستلاحظه بالتأكيد إذا كنت قد عملت من قبل مع إطار يعتمد على Win32 / WinAPI.

ومن الأمثلة الرائعة على ذلك زر يحتوي على صورة ونص عليه. هذا ليس عنصر تحكم Windows قياسي ، لذلك لا تقدم لك WinForms هذا الاحتمال خارج الصندوق. بدلاً من ذلك ، سيتعين عليك رسم الصورة بنفسك ، وتنفيذ الزر الخاص بك الذي يدعم الصور أو استخدام تحكم جهة خارجية. مع WPF ، يمكن أن يحتوي أي زر على أي شيء لأنه في الأساس عبارة عن حدود مع المحتوى وحالات مختلفة (على سبيل المثال ، لم يتم المساس بها ، أو حالة مرور المؤشر (hover) ، أو حالة الضغط عليها (pressed) ). زر WPF هو "look-less" ، كما هو الحال مع معظم ضوابط WPF الأخرى ، مما يعني أنه يمكن أن يحتوي على مجموعة من عناصر التحكم الأخرى داخله. تريد زر مع صورة وبعض النص؟ فقط ضع صورة و تحكم TextBlock داخل الزر وأنت انتهيت! أنت ببساطة لا تحصل على هذا النوع من المرونة من عناصر تحكم WinForms القياسية ، وهذا هو السبب في وجود سوق كبير لتنفيذ عمليات تحكم بسيطة إلى حد ما مثل الأزرار ذات الصور وما إلى ذلك.

العيب في هذه المرونة هو أنه في بعض الأحيان ستضطر إلى العمل بجد لتحقيق شيء سهل مع WinForms ، لأنه تم إنشاؤه من أجل السيناريو الذي تحتاج إليه. على الأقل هذا الشعور في البداية ، حيث تجد نفسك تنشىء Templatesلجعل ListView مع صورة وبعض النص محاذية بشكل جيد ، وهو ما يفعله WinForms ListViewItem في سطر واحد من ال Code

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

فيما يلي قائمة ذاتية تماماً للمزايا الأساسية لـ WPF و WinForms. يجب أن تعطيك فكرة أفضل عما ستفعله.

مزايا WPF

  • انها أحدث وبالتالي هي أكثر تناغم مع المعايير الحالية
  • تستخدمها Microsoft للعديد من التطبيقات الجديدة ، على سبيل المثال ، استوديو مرئي
  • Controls إنها أكثر مرونة ، لذا يمكنك فعل المزيد من الأشياء دون الحاجة إلى كتابة أو شراء جديدة
  • عندما تحتاج إلى استخدام عناصر تحكم تابعة لجهة خارجية ، فمن المحتمل أن يكون مطورو عناصر التحكم هذه أكثر تركيزًا على WPF لأنه أحدث
  • صيغة الـ XAML تجعل الاشياء سهلة الانشاء و التحرير في الواجهة التي تعملها. و الامر الثاني هو جعل العمل سهل من خلال فصل التصميم بستخدام صيغة الـ XAML و وقت كتابة البرنامج بلغة التي تحب ( C#, VB.NET etc)
  • ربط البيانات Databinding التي تسمح لك بالحصول الى المزيد من فصل بين البيانات data و الواجهات ( وقت تصميم الواجهه)
  • الان يمكن استخدام hardware acceleration (مسرعات العتاد هي اجهزة تقوم بتسريع عمليات الرسم في الشاشة) و التي تقوم بدورها بتسريع عملية رسم drawing الواجهة GUI لاداء افضل.
  • تقدم لك WPF واجهة رسومية للمستخدمين user interfaces لكل من تطبيقات الوندوز Windows appو تطبيقات الويب Web app ( من خلال Silverlight/XBAP)

مزايا WinForms

  • تقنية قديمة لذلك تمت تجربتها و استخدامها كثيراً
  • هناك الكثير من المكتبات و التحكمات الجهاز للاستخدام مبنية من طرف ثالث 3rd party يمكنك شرائها او الحصول عليها مجانا
  • المصمم designer في VB لا يزال موجوداً لذا هو افضل في WinForms من الـ WPF لانها تطلب بالمزيد من الجهد و العمل.