בוודאי
וגם כמה דברים קודם:
- MVVM זה לא הדבר היחיד שיש ב-WPF, כי אפשר לממש אותו בכמה צורות, מיקרוסופט מימשו אותו בעזרת XAML ו-Binding
- חשוב מאד לפני שמתחילים לבנות UI ב-WPF ללמוד עם על שיטת ה-Layout בסביבה זו, ומגוון הפאנלים (המועט מאד אבל רב אפשרויות) שקיימים בדיפולט (אפשר גם לייצר בעצמך פאנלים, אבל זה למתקדמים)
- הרעיון המרכזי הוא שאתה בונה את ה-UI, ומייצר במקביל סט של אובייקטים שמייצגים את המצב של ה-UIת והבינדינג הוא בעצם הדבק שמחבר ביניהם
- ישנן מספר שיטות לעשות בינדינג, וגם מספר עזרים כמו למשל Converters, חשוב מאד ללמוד גם אותם, זה קצר ופשוט (קונברטר זה מימוש של אינטרפייס עם 2 מתודות) וחיוני מאד.
- לעיצוב UI מדוייק ולמימוש עיצובים צריך גם לדעת סטיילינג בזאמל, זה תחום שלם ואם אתה בונה אפליקציה פנים ארגונית אז תשאיר את זה לסוף
- WPF מבוסס בהמון מקומות על טמפלייטים, אל תיבהל זה (גם כן) פשוט מאד, צריך רק להכיר פעם אחת וזה טס
- הבדל העיקרי בין Model ו-ViewModel הוא שה-Model מתאר את מבנה הנתונים כפי שהוא מאוחסן (למשל ב-DB), ואילו ה-ViewModel מתאר את מבנה המסך, שהנתונים הם חלק ממנו, אבל גם איזה אובייקט נבחר ע"י המשתמש זה חלק ממנו שאינו חלק מהמודל, או האם expander מסויים סגור או פתוח וכן הלאה, ולכן אפשר את המודל לשים בתור פרופרטי ב-ViewModel ובמקרה שאתה משתמש ב-EF אז הוא תומך ב-INotifyPropertyChanged ולכן אפשר בקלות להשתמש בו כחלק מה-ViewModel
- אחרי שתבין את INotifyPropertyChanged (אינטרפייס שכל מה שיש בו זה איבנט אחד) אתה תראה שצריך ב-WPF פריימוורק ל-MVVM שממלא כמה פינות שמיקרוסופט שכחו (כמו למשל מימוש פשוט וסביר ל-ICommand) אז תתקין MVVMLight דרך NUGET. יש עוד כמה פריימוורקים כמו PRISM (שאני מתעב אותו) או Caliburn.Micro (שאני עובד איתו), אבל MVVMLight הוא הכי פשוט להתחיל איתו
- Xamarin תומך גם בזאמל, עוד לא בדקתי אבל ממליץ לבדוק, במיוחד למי שרוצה לכתוב למובייל בהמשך
עכשיו לכמה וידיאוס, בגדול תחפש ביוטיוב WPF MVVM tutorial ותראה כמה מאלה שיוצאים בתוצאות, הרעיון הוא אותו הרעיון, וגם (לפחות לטעמי) אין פה שום דבר שצריך להצמד אליו באדיקות, רק להבין את הרעיון
טיובים:
https://www.youtube.com/watch?v=7LKiYpmHxhc
https://www.youtube.com/watch?v=R_NQlB5eHKE
https://www.youtube.com/watch?v=-4fOPIz2s_U
אתרים טובים וחשובים:
http://drwpf.com/blog
https://wpf.2000things.com
אחרי שתראה כמה וידיאוס ותעשה איזה מיני פרוייקט אחד או שניים לדוגמה, בטח יתחילו לעלות כל מיני שאלות מה זה זה ואיך עושים דברים כאלה ואחרים, ולרוב השאלות יש תשובות קצרות ופשוטות שלפעמים מאד קשה למצוא אותן בגוגל אם לא יודעים בדיוק מה לחפש, אז תשאל, כי עברתי את הדרך הזו בעצמי וחבל שלא תשתמש בידע שצברו אחרים.
עכשיו צא לדרך, ותחזור עם שאלות
בברכה,
זיו