Triggers, Actions & Behaviors in Blend
לפעמים שינוי קטן בקוד מוביל לשינוי גדול בדרך החשיבה שלנו ובהסתכלות שלנו על דברים. ב- Blend 3 הוסיפו את התמיכה ב- Triggers, Actions & Behaviors כדי ליצור אחידות ב-XAML בין WPF ו-SL. אך ע"פ דעתי השינוי הקטן הזה פותח דלת חדשה של הסתכלות על דברים ומקרב אותנו עוד צעד למערכות RAD שיהיה אפשר לבנות איתם UI טוב בלי לרוץ ישר לקוד.
Triggers & Actions
ב-WPF יש תמיכה במספר Triggers מובנים שיודעים לקבל Actions מובנים, אך מה אם אני רוצה להגדיר אחד משלי?
להלן קוד דוגמא לשימוש בנגנון ה-Triggers הסטנדרטי של WPF:
להלן קוד דוגמא בשימוש ב-Actions שאני בונה וה-Blend נותן לי בצורה פשוטה (RAD) להשתמש בהם.
הקוד ל-MyAction:
אנחנו ב- Invoke יכולים לכתוב מה ה-Action שלנו יעשה ועל מי. מה הביג דיל??? שעכשיו אנחנו יכולים לבנות ספריה של Actions שתכנת ה-Blend יוכל להשתמש בהם ולתת ל-UI לא רק עיצוב על גם אינטראקטיביות.
אז מה זה Trigger?
מאפשר לי להגדיר ע"פ איזה חוקיות יופעל ה-Trigger שבעקבותיו יופעל Action. ב-Attach אני מתחבר למקור וע"פ לוגיקה שאני מחליט אני מפעיל את InvokeActions.
לדוגמא קוד של TimerActions:
כלומר ה-Trigger זה מתי להתחיל לפעול
וה- Action זה מה עושים.
אז מה זה Behavior?
זה כמו Action אך בלי המתי. ברגע שהוא מתחבר למקור הוא משנה אותו, כלמור מוסיף לו התנהגות שלא הייתה לו עד עכשיו.
איך זה עוזר לי בפרויקט כל הידע הזה?
אני מאמין שמפתחי UI צרכים את היכולת לעצב מסכים בכלי WYSIWYG, שיש בהם את התמיכה גם לשלב את הפונקציונאליות שהמפתחים כתבו ע"י ה- Triggers, Actions & Behaviors.
דוגמאות:
בימים אלו אני עובד על תשתית של Triggers, Actions & Behaviors שקשורים ל-Prism כך שמפתח ב-Blend יוכל בצורה פשוטה להגדיר:
· Region
· Publish Event
· Subscribe to Event
· ועוד...
אשמח לשמוע על רעיונות נוספים :-)