איך לתקשר בין חלקים שונים של תוכנה ב-C# wpf?
-
יש לי שני חלקים בתוכנה
- פקד שאחראי להציג מידע מתוך db
- פקד שאחראי להציג מידע שקשור למידע בפקד א' אבל רק בצורה עקיפה
מה בעצם הצורה הכי טובה לעשות את הקוד שמגשר ביניהם
מה שעולה לי בראש לבינתיים הם כמה אפשרויות
- ליצור ViewModel שיקושר לשני הפקדים.
- שימוש ב-delgates ו-events
- שימוש באירועים ולהעביר instance של פקד א' לפקד ב' או הפוך
- ראיתי מישהו שכתב להשתמש ב-Dependency Properties (אין לי מושג מה זה).
עד היום כמתכנת מתחיל התשמשתי עם אפשרות 3. כעת אני שוקל את הדברים מחדש.
אשמח לשמוע מהמומחים. תודה מראש. -
@pcinfogmach כתב באיך לתקשר בין שלוש חלקים של תוכנה ב-C# wpf?:
אשמח לשמוע מהמומחים
אני לא מומחה גדול, אבל אם אתה הולך על MVVM אז לכאורה לא צריך להיות קשר בין פקדים/תצוגות, כל פקד/תצוגה הוא עצמאי, והוא מקבל את הנתונים שהוא אמור להציג דרך ה - ViewModel (כנראה מה שהתכוונת באפשרות 1)
אגב, אם אתה כבר מפתח ב - WPF ולא יודע מה זה DependencyProperty אז אתה ממש מפסיד...
-
@קומפיונט
לא כל כך הבנתי את הפתרון שלך אסביר:
נגיד יש לי viewmodel א' שבו יש נתונים מה-db ויש לי את ה-viewmodel ב' שהוא אחראי על נתונים אחרים אבל שקשורים בעקיפין ל-נתונים ב-viewmodel א'
אני רוצה ליידע את viewmodel ב' כאשר הנתונים ב-viewmodel א' משתנים. איך אני עושה זאת?אגב תודה על ההערה החשובה עם ה-dependencyproperties עשית לי מוטיבציה ללמוד על הנושא.
-
@pcinfogmach כתב באיך לתקשר בין שלוש חלקים של תוכנה ב-C# wpf?:
אני רוצה ליידע את viewmodel ב' כאשר הנתונים ב-viewmodel א' משתנים. איך אני עושה זאת?
ה - ViewModel לא מאחסן את הנתונים, אלא רק מתווך אותם ממקור אחר (Service לדוגמא), אז הרעיון שברגע שהנתונים משתנים זה משתנה ביחד בשני ה - ViewModels. במצב תקין ViewModel צריך לדעת כמה שפחות על קיומם של ViewModels אחרים.
אם אתה מסתבך עם זה, אז תזרום עם מה שנוח לך, @dovid פעם טען שלא חייב לעשות הכל "לפי הספר" (ובפרט אם אתה מפתח יחיד שיודע להתמודד עם נקודות החולשה שלך)
-
מצאתי כתבה שבעצם מתארת את הבעיה בצורה יפה ומציעה פתרון שלכאורה אפשר ליישם ב-c#
הייתי שמח לשמוע אם זה הכוון הנכוןhttps://betulnecanli.medium.com/how-to-pass-data-between-viewmodels-f8be320de7ab
-
@pcinfogmach כתב באיך לתקשר בין חלקים שונים של תוכנה ב-C# wpf?:
הייתי שמח לשמוע אם זה הכוון הנכון
כן. אבל מי אני שאני יאשר...
-
תלוי באיזה סדר גודל של viewModels מדובר
וגם בכמה סוגי עדכוניםלא יודע מה הדרך הנכונה אני רק יודע לומר מה אני הייתי עושה
אם זה עדכון אחד או שתים...
הייתי עושה event
אבל אם זה יותר מזה (אז זה אומר ששני הviews הם בעצם שייכים לאותם נתונים פחות או יותר)
הייתי עושה viewModel יחידי לשניהם