binding לא עובד אם זה לא עובר דרך הממשק.
-
שלחתי להדפסה VISUAL כל שהוא. שבתוכו יש קישורים של BINDING .
- לא עבד הBINDING בכלל. ורק בהצגה על המסך זה עבד.
- כשהשתמשתי בSTATICRESOURCES והכנסתי אובייקט בRESOURCES את אותו אובייקט שבDATACONTEXT וקישרתי אליו הכל עבד מעולה. (בעקרון היה אפשר לקבוע את הנתונים בקוד ישר אבל כיון שאני צריך את זה לTEMPLATE ןSTYLE מאד לא נוח לעשות זאת דרך הקוד).
- דבר מוזר אחר שהכנסתי מערך לRESOURCE וקישרתי אליו LISTVIEW. ובאייטם הכנסתי TEXTBLOCK שהטקסט שלו מקושר בבינדינג לערך הנוכחי שבליסט. התוצאה היתה שהוא אכן הוסיף אייטמים לפי מספר האייטמים שבליסט שנמצא בRESOURCE אבל את הערך הוא לא הסכים להכניס לTEXTBLOCK.
היוצא מכאן שאם הפקד לא מגיע למסך לא עובד בכלל הBINDING ואפי' אם מקור הנתונים הוא בתוך ה-RESOURCES לא יעבוד.
ודרך אגב לא לדאוג אני לא משתמש בפנל וירטואלי אלא ב-WRAPPANEL.פורסם במקור בפורום CODE613 ב02/02/2014 21:08 (+02:00)
-
כרגע גיליתי כך.
כידוע DATABINDING מתייחס ל-DATACONTEXT הראשון שהוא מוצא בשרשרת, הוה אומר אם יש בילד DATACONTEXT מתייחס אליו ואם זה NULL הוא עובר להורה וכו'.אבל....
כל זה במידה וזה מגיע לממשק אבל אם זה הולך ישירות להדפסה אז אפילו אם כופים INVALIDATE וכן MEASURE וכן ARRANGE הוא יודע להתייחס רק לDATACONTEXT של הפקד הנוכחי ולא מחפש בירושה.
ולכן כנראה גם במקור נתונים של רשימה הוא לא ידע להתייחס לDATACONTEXT כיון שהוא נמצא בLISTVIEW והוא לא מעביר אותו לכל אייטם.
פורסם במקור בפורום CODE613 ב02/02/2014 22:30 (+02:00)
-
אז זהו..
הבעייה היא בעצם רק לגבי LIST שDATACONTEXT שלו נמצא ב-CONTAINER שלו ולכן זה לא עובד אם זה לא רואה את המסך. לגבי שאר הפקדים בדרך כלל אפשר לגשת אליהם ישירות.
והפתרון פשוט שלדוגמא בTEXTBOLCK במאפיין DATACONTEXT שלו צריך להכניס
DataContext="{Binding DataContext, RelativeSource={RelativeSource TemplatedParent}}"
ואז אנחנו מרוויחים שמקור הנתונים נמצא ישירות בפקד ולא ב-PARENT. כיון שהצהרנו מפורש שיעתיק מההורה לילד.מקווה שעזר למישהו
פורסם במקור בפורום CODE613 ב03/02/2014 08:21 (+02:00)