TOC

This article has been localized into Hebrew by the community.

על WPF:

WPF מול WinForms

בפרק הקודם דנו בנושאים "מהי WPF" ודיברנו קצת על WinForms. בפרק זה נערוך השוואה בין שתי הטכנולוגיות. למרות ששתי הטכנולוגיות משמשות את אותה מטרה, קיימים הבדלים גדולים ביניהן. אם אף פעם לא עבדת עם WinForms ובמיוחד אם WPF היא סביבת פיתוח הGUI הראשונה שלך, אתה יכול לדלג על פרק זה. אך אם אתה מעוניין להכיר את ההבדלים בין שתי הטכנולוגיות, המשך לקרוא.

ההבדל החשוב ביותר בין WinForms וWPF הוא שבעוד שWinForms הוא פשוט שכבה נוספת לפקדים הסטנדרטיים של Windows (למשל TextBox - שדות טקסט), WPF בנוי מאפס ואינו מסתמך על הפקדים הסטנדרטיים של Windows כמעט בכל המקרים. זה אולי נראה כמו הבדל קטן, אבל למעשה זהו הבדל משמעותי, בו ניתן יהיה להבחין אם עבדתם בעבר עם framework המתבסס על Win32/WinAPI.

דוגמה טובה היא לחצן עם טקסט ותמונה עליו. זה אינו פקד Windows סטנדרטי, לכן טכנולוגיית WinForms אינה מציעה אפשרות כזו מובנית ("built-in"). במקום זאת, תאלץ לצייר את התמונה בעצמך, ליצור פקד כזה משלך או להשתמש בפקד של צד שלישי. ב-WPF, לחצן יכול להכיל כל דבר כי הוא בסך הכל גבול עם תוכן ומצבים ומשתנים (לדוג' לחיצה, שחרור, מעבר עכבר וכד'). לחצן WPF הוא פחות או יותר כמו שאר פקדי WPF, מה שאומר שהוא יכול להכיל מגוון של פקדים בתוכו. אתה רוצה לחצן עם טקסט ותמונה? אין בעיה! רק שים פקד Image בתוך פקד ה-TextBlock שבתוך הלחצן וסיימת! אין לך את הבעיה של WinForms, שם יש שוק גדול למדי עבור דוגמאות פשוטות כמו פקד עם טקסט ותמונה וכדומה.

החיסרון של גמישות זו הוא שפעמים תצטרך לעבוד קשה יותר על מנת להשיג דברים שהיו פשוטים ביותר עם WinForms, בגלל שהם נוצרו בדיוק למקרה שלך. זה עשוי להיראות התחלה מאפס כשתצטרך ליצור תבניות על מנת ליצור פקד ListView עם תמונות וטקסט מיושר, משהו ש-WinForms עושה בשורת קוד אחת עם ListViewItem.

זה רק הבדל אחד, אך כשתעבוד עם WPF, תגלה שזו הסיבה העיקרית לרוב ההבדלים - WPF פשוט עושה דברים בדרך שלה, לטוב ולמוטב. אתה לא מוכרח יותר לעשות דברים בדרך של Windows, אבל כדי לקבל גמישות זו, אתה משלם במעט יותר עבודה כשאתה רק צריך לעשות דברים בדרך הרגילה של Windows.

הנה רשימה של חסרונות ויתרונות של WPF לעומת WinForms. היא עשויה לתת לך תמונה טובה יותר של המציאות:

יתרונות WPF

  • הוא חדש יותר ולכן יותר מותאם לסטנדרטים עדכניים.
  • מייקרוסופט משתמשת בו להרבה אפליקציות חדשות, למשל Visual Studio.
  • הוא גמיש יותר, כך שאפשר לעשות יותר דברים מבלי לכתוב או לקנות פקדים חדשים.
  • במידה ותצטרך פקדים של צד שלישי, יהיה יותר היצע של פקדים כאלה, מאחר והמפתחים של פקדים כאלה יהיו יותר ממוקדים ב-WPF היות שזו טכנולוגיה חדשה יותר.
  • XAML מקילה את העבודה של בניית יישומי GUI, ומאפשרת לך להפריד בין העיצוב (XAML) לבין הקוד (C#, VB.NET וכד').
  • קשירת נתונים (Data Binding), אשר מאפשרת לך לקבל הפרדה טובה יותר בין הנתונים לתצוגה שלהם.
  • משתמשת במאיצי חומרה לציור ממשק המשתמש, עבור ביצועים טובים יותר.
  • מאפשרת לך ליצור ממשק משתמש ליישומי Windows וליישומי אינטרנט (Silverlight ו-XBAP) יחד.

יתרונות WinForms

  • ישנה יותר ולכן נוסתה ונבדקה יותר.
  • קיימים כבר הרבה פקדי צד שלישי, בחינם או בתשלום.
  • המעצב (designer) של VS עדיין, נכון להיום, טוב יותר עבור WinForms מאשר עבור WPF, מה שאומר שב-WPF תצטרך לעשות יותר עבודה לבד.