פיתוח לחלונות 8 עם הטמל5 – איך לתמוך בעברית ובשפות מימין לשמאל (RTL) בגרסה הסופית של חלונות8

יום שלישי, אוגוסט 28, 2012

ביוני האחרון כתבתי על איך להוסיף תמיכה בכתיבה מימין לשמאל באפליקציות של חלונות 8. מאז חלונות 8 הגיע לגרסה סופית, אבל הפתרון שהצגתי אז לא מספיק בשביל היום, ונדרש עוד צעד על מנת לאפשר תמיכה בשפות מימין לשמאל.כשמריצים אפליקציית גריד בפעם הראשונה, כך היא נראית – מיושרת לשמאל:  בשביל להפוך את השפה צריך להגדיר עברית כשפה בתוך ה application manifest, בטאב הראשון:בדומה למה שהיה בגרסה הקודמת, מה שזה עושה זה מוסיף פסדו סלקטור של CSS, כך שנוכל להגדיר התהגות מיוחדת ע”י הסלקטור  -ms-lang.הבעיה היא שאם נריץ את האפליקציה עכשיו, נראה באג מוזר. כל הקונטרולים מסוג listview מתנהגים מאוד מוזר, ומופיעים...
תגיות: , , , , ,
תגובה אחת

Behaviors חלק 8 – איך מממשים Drag and Drop ב MVVM ע"י שימוש ב Behaviors

יום שלישי, אוגוסט 14, 2012

בפוסט הקודם ראינו איך נראית הדרך הנאיבית לממש Drag and Drop ב WPF. בפוסט הנוכחי נראה איך לממש Drag and Drop ע”י Behaviors בצורה שהיא נוחה ל MVVM. כתיבת ה Behavior בדומה לפוסט הקודם, המטרה שלנו היא לאפשר פעולת Drag and Drop מהמלבן לכפתור: הפעם, במקום להרשם ב CodeBehind לארוע, נעשה זאת ע”י Behavior.ניצור Behavior חדש בשם DraggableBehavior, שאפשר לחבר על כל אלמנט שיורש מ FrameworkElement: 1: public class DraggableBehavior : Behavior<FrameworkElement> 2: { 3:  4:  5: } נממש את המתודה OnAttached, ובה נרשם לאירוע PreviewMouseLeftButtonDown: 1:...
תגיות: , , ,
2 תגובות

Behaviors חלק 7 – איך מממשים Drag and Drop ב WPF ע"י Code Behind

בפוסט הקודם ראינו איך פותרים את בעיית ה Commands ב MVVM ע”י שימוש ב Behaviors. בפוסטים הבאים נתחיל לחקור הרבה בעיות ש Behaviors מפשטים, כשנתחיל עם Drag and Drop.אחת הפעולות הסטנדרטיות שמממשים לעיתים קרובות היא Drag and Drop. לממש Drag and Drop ב WPF יחסית קל היות ויש תמיכה טובה מאוד של התשתית עבור זה, אבל יחד עם זאת הפתרון הבסיסי עדיין רחוק מלהיות אלגנטי.כדוגמא, ניקח את המסך הבא, בו נרצה לממש Drag and Drop מהמלבן לעבר הכפתור.פעולת ה Drag and Drop תתחיל כשנמקם את סמן העכבר מעל למלבן, נלחץ על הכפתור השמאלי ונתחיל לגרור. בשביל זה צריך להרשם...
תגיות: , , ,
אין תגובות

Behaviors חלק 6– פתרון בעיית ה Commands ב MVVM

יום שישי, אוגוסט 10, 2012

בפוסט הקודם ראינו איך כותבים Action מאפס בעצמנו. בפוסט הנוכחי נראה את אחד השימושים הכי שימושיים ב Actions – ולמעשה איך נפתרת אחת הבעיות המציקות בשימוש ב Commands תחת MVVM. בעיית ה Commands.תחת MVVM, הדרך היחידה לחבר בין ה View לבין ה ViewModel זה על ידי Binding ו Commands. כך מתקבלת הפרדה טובה יותר מאשר הייתה לפני כן.בגדול, המידע יעבור בין ה ViewModel ל View ע”י Binding, ופעולות יעברו מה View ל ViewModel על ידי Commands.כדוגמא, ניצור חלון שמחובר ל ViewModel. ב ViewModel נגדיר Command בסיסי (אני משתמש ב RelayCommand מתוך MVVM Light). כך יראה ה ViewModel:  1:...
תגובה אחת

Behaviors חלק 5 – יצירת Action משלנו

יום שישי, יולי 6, 2012

בפוסט הקודם ראינו איך אפשר להוסיף TriggerActions (או פשוט Actions, פעולות) ע”י בלנד. בפוסט הנוכחי נראה איך אפשר לכתוב Actions מאפס בעצמנו. כמובן על מנת להתחיל נרשום את מרחב השמות של Behaviors (שימו לב כי Behaviors הוא שם כללי לשני הסוגים, גם ל Behaviors וגם ל Actions): xmlns:i=http://schemas.microsoft.com/expression/2010/interactivity  בשביל להוסיף Action, נשים על החלון מלבן, ונכין את הקרקע להוספת Action: <Grid> <Rectangle Fill="#FFF4F4F5" Margin="119,87,166,103" Stroke="Black"> <i:Interaction.Triggers> <i:EventTrigger EventName="MouseUp">  </i:EventTrigger> ...
תגיות: , , ,
אין תגובות

Behaviors חלק 4 – שימוש ב TriggerActions

בפוסט הקודם ראינו איך יוצרים Behavior, התנהגות, בצורה עצמאית מאפס.התנהגויות באות למעשה בשני סוגים, כשלשניהם קוראים בשם הכללי Behaviors: ה Behaviors שראינו עד עכשיו, ו TriggerActions שמספק טיפה יותר שליטה על *מתי* הפעולה מופעלת. למעשה Behavior מוסיף התנהגות שלמה שפשוט מוסיפים על אלמנטים בזאמל, בעוד Actions מאפשרים לנו להפעיל פעולה מסוימת, כשאנו יכולים לקבוע מתי הפעולה הזו תקרה – כתגובה לאיזה אירוע.איך מוסיפים Action?  בפוסט הבא נראה איך יוצרים TriggerAction משלנו מאפס.
אין תגובות

קוד ומצגת ליום הפתוח שהתקיים ב 25.6 במיקרוסופט – פיתוח לחלונות 8 ב HTML5

יום שלישי, יוני 26, 2012

תודה לכל מי שהגיע ליום הפתוח שהתקיים אתמול (25.6) במיקרוסופט רעננה.להלן המצגת שהראיתי במהלך ההרצאה: (שימו לב שבהרצאה לא הספקנו לעבור על הכל)Win8 in HTML5View more presentations or Upload your own. ואת הקוד ניתן להוריד מכאן: http://sdrv.ms/Qc21TUאת בלנד, הכלי שהדגמתי בסוף אפשר להוריד כחלק מויז’ואל סטודיו 2012 (שימו לב כי למרות שויז’ואל סטודיו 2012 עובד גם על חלונות 7, אפשר לפתח לחלונות 8 רק תחת חלונות 8.
אין תגובות

תכנות בהטמל5 לחלונות 8 – איך להוסיף תמיכה בשפות מימין לשמאל כמו עברית

יום רביעי, יוני 13, 2012

הפוסט הזה מעודכן לגרסת ה RP של חלונות. בשביל תמיכה מימין לשמאל בגרסה הסופית של חלונות יש פוסט עדכני יותר. איך מוסיפים תמיכה בשפות שנכתבות מימין לשמאל בחלונות 8? שאלה שאני נשאל לעיתים קרובות היא איך מתאימים אפלקציות הטמל5 לעבודה בעברית בחלונות8.אחד החלקים הכי כיפים בכתיבה לחלונות 8 זה שכל הידע שלנו בהטמל רלוונטי גם כאן, ולפיכך היינו יכולים להתאים ל RTL בכל הדרכים הרגילות. אבל.. אנחנו עובדים בהטמל5, לא 4, לפיכך אפשר לעבוד בצורה אפילו יותר חכמה ממה שרגילים אליה – ע”י תגית הCSS3 לשפת ממשק - -ms-lang (זהו פיצ’ר לא סגור של הטמל5 ולכן הקידומת –ms).  איך מגדירים שפת...
תגיות: , , , , , , ,
3 תגובות

Behaviors – חלק 0 – למה זה הפיצ'ר החשוב ביותר ב WPF4, ולמה הוא קריטי למימוש של MVVM

יום שישי, יוני 8, 2012

הפיצ’ר החזק ביותר שהתוסף ל WPF4 – התנהגויות (Behaviors) הוא פיצ’ר שמפתיע בחוזק שלו.Behaviors מאפשרים הוספת התנהגות “מבחוץ” לקונטרולים, (טיפה מזכיר את Extension Methods שיכולים להוסיף למחלקות קיימות ב C#).את ההתנהגויות הללו אפשר לכתוב על מנת להרחיב פונקציונאליות של קונטרולים קיימים, בצורה מאוד ריוזאבילית (reuse קוד גבוה מאוד).(כדוגמא – בפוסט הקודם הזה אפשר לראות איך בכמה שניות אפשר להוסיף התנהגות של גרירה לאלמנטים בחלון).את ההתנהגויות הללו אפשר להוסיף לקונטרולים בצורה דקלרטיבית (ע”י XAML, ללא הוספה של Code Behind), מה שהופך את כל הסיפור לגם *מאוד* אלגנטי, וגם לפתרון מעולה לכמעט כל בעיה שמתעוררת ב MVVM.ב MVVM שולטים על ה...
תגיות: , ,
אין תגובות

Behaviors חלק 3 – יצירת ב Custom Behavior משלנו

בפוסט הקודם ראינו איך להשתמש ב Behaviors מתוך ויז'ואל סטודיו הכח האמיתי בשימוש ב Behaviors מגיע מיצירת Behaviors משלנו, כשבפוסטים מתקדמים יותר נראה איך אפשר להוסיף התנהגויות מאוד מורכבות.על מנת ליצור behavior, יש לממש את המחלקה Behavior של T. כשבמקום T נשים את מחלקת הבסיס אליה נרצה לחבר את ה Behavior. לדוגמא: public class HighlightBehavior : Behavior<Control>{ }ה Behavior יחובר למחלקה קונטרול, מה שאומר שאפשר להשתמש ב Behavior הזה בכל מחלקה שיורשת מקונטרול.החלק החשוב במחלקה הזו היא המתודה OnAttach שאותה תמיד נדרוס. המתודה הזו נקראת בפעם הראשונה שמוסיפים את ה Behavior לקונטרול כלשהו, ובמתודה הזו אנחנו נכתוב את כל הקוד ההתחלתי...
תגיות: , , ,
תגובה אחת