locked
לכל מי שמתעסק עם BINDING נא לשים לב! RRS feed

  • דיון כללי

  • לאחר שעות ששרפתי סתם עד שהבנתי את הבעיה.

    אין להשתמש בקישור לאובייקט עצמו.

    לדוגמא USERCONTROL שמכיל TEXTBLOCK ובמאפיין הטקסט תכניסו BINDING של ברירת מחדל שזה DATACONTEXT את אחד השדות של ה-USERCONTROL עצמו. (כמובן שדה בצורת GET SET). ולמשל בתוך הPROPERTY הזה ב-SET כל פעם שמשנים את הערך נצהיר על THIS.DATACONTEXT = THIS הוה אומר שמקור הנתונים יהיה ה-USERCONTROL עצמו. וכך כל פעם שמשנים את הערך של המאפיין מקור הנתונים מתעדכן וכך לכאורה היה צריך שגם מאפיין הטקסט של תיבת הטקסט יתעדכן.

    אך למרבה הצער זה לא תמיד כך.  ולפעמים בהרצה זה יעבוד אבל בזמן תצוגה DESIGNER זה לא יעבוד לפעמים אם משנים את הערך מתוך שדה אחר הוא לא מתעדכן רק בזמן ה-CONSTARCTOR. וכל מיני שגעונות וכדומה.

    למי שפעם חפר בתהליך של הסרליזציה יוכל להבין שזה תלוי מה הוא קורה קודם ואיזה מידע הוא מחליט לאבד או לעבד. והפיתרון הוא ליצור אובייקט חיצוני שיכיל את אותם השדות ולהכניס לו את הערכים כל פעם לפני שמרעננים את הDATACONTEXT ובמקום THIS.DATACONTEXT = THIS לכתוב THIS.DATACONTEXT = MYCLASS. זה נשמע מוזר שלא היה אמור להיות הבדל כי סדר הקריאה נשאר אותו דבר. אבל זה המציאות, שמתי שהוא צריך לקרא לעצמו הוא לא תמיד מתיחס לעצמו במצב הנוכחי. 

    אינשללה הייתי מבין מה אני אומר.


    צבי דויטש

    יום שלישי 30 אפריל 2013 12:29