Command is Out Behavior is In

Command is Out Behavior is In

אף פעם לא אהבתי את הרעיון של Delegate Command הרגשתי שאני כותב קוד "צנרת" בתוך VM שאין בו היגיון, אך זה לא החיסרון היחיד שיש ל-Command.

1. יש רק פרמטר אחד בשם CommandParmeter שהוא מסוג אוביקט.

2. אני לא שולט על ה-Trigger או ה-Event שמפעיל את ה-Command.

פתרון ותחליף ל- Command שעובד גם ב-WPF ו- Silverlight זה שימוש ב-Trigger ו- Action. ( ראו פוסט ראשון בנושא ). הצוות של Blend 4 כתב בשבילנו מספר Behaviors שעושים לנו את החיים מאוד נוחים.

לינק לרשימת ה- Behaviors שקיימים ב-Blend 4 SDK. ה-Behaviors שיכולים להחליף את ה- Command הם:

 CallMethodAction - Use the CallMethodAction action to call a method on the DataContext of an element when an event occurs. For more information about this action, see CallMethodAction.

 InvokeCommandAction - Use the InvokeCommandAction action to invoke a command exposed by the data source.

היתרונות:

1. אפשר לעבוד איתם עם Blend ע"י Drag&Drop וחלון ה-Properties. ( פשוט וקל בלי קוד )

2. אני קובע איזה Trigger יפעיל את ה- Action.

3. אני תמיד יכול לכתוב Action משלי שיש לו מספר רב של DP כך שאני מקבל ריבוי של פרמטרים ולא אחד כמו ב-Command.

לסיכום:

עבודה עם TAB ( Triggers, Actions & Behaviors ) מקטינה את כמות הקוד ב-VM ונותנת ל-XAMLליסת יותר כוח ליצור מסכים אינטראקטיבים + מידע.

No Comments