כפייה על חישוב מידות אלמנט ב-WPF לפני הצגתו על המסך
-
יש שתי פקודות ששניהם ביחד גורמים לחישוב המידות של האלמנט לפי מה שידוע לי:
uielemnt.Measure(new Size(?,?));
uielement.Arrange(new Rect(new Point(0, 0), ui.DesiredSize));
בפועל התוצאה של ה-DesiredSize יצאה יותר מכפי שיצא על המסך.
זה קרה לי ב-TextBlock שהטקסט גלש ורציתי לדעת כמה הגובה יצא, כפיתי את החישוב וקיבלתי את המאפיין הלז. ובדקתי גם את ה-ActualHigth ואכן יצא אותו דבר, אבל כשהגיע למסך הוא התקטן.
רציתי לבדוק במה הוא הקטין, אז הפכתי את תיבת הטקס לתמונה לפני שהגיע למסך ואז הדפסת את שניהם את התמונה ואת הרגיל וראיתי שיש לו שינוי במרחק בין שורות שעל המסך הוא החליט שמספיק פחות.אם למי שהוא יש מושג בזה אני ישמח, כי זה אומר שאין אפשרות לדעת באופן בטוח את ה-ACTUALWITH שלא אחרי הצגה
פורסם במקור בפורום CODE613 ב06/02/2014 16:30 (+02:00)
-
הפקודות שהצגתי בתחילת האשכול נותנות את התוצאה - ולגבי ה-ACTUAL הוא מתעדכן רק אחרי פעולת הARRANGE
ולגבי מה שדוד ל.ט שאל -
המקרה שלי הוא שהכנסתי TEXTBLOCK עם גלישה בתוך BORDER ואת זה הוספתי ל"דבק פנל" , ואת הפעל הכנסתי לתוך גריד ואת הגריד הכנסתי לתוך PAGECONTENT שבסוף נוצר לי מסמך של FIXEDDOCOMENT.כך שאני לא רואה סיבה לשינוי, וכמו שאמרתי שבדקתי מה השינוי קרה על ידי זה שמרתי את זה לתמונה וגיליתי שעל המסך הוא בחר להפחית מרווח בין שורות בTEXTBLOCK, כי בתמונה הוא הציג מרווח יותר גדול.
--והוכחה לזה שבמידה ויש שורה אחת של טקסט הוא לא מזייף בגודל וזה רק לגבי הWRAP שהחישוב שלו שונה,
--ניסיתי גם לבדוק אולי הבעיה ברזולוציה ובגדול פונט וכדו' (בעיות שרישמית שמורות רק לWINFORM) הכל לא עזר.
--ויותר נראה לי שזה פשוט בעברית "פאק" של אחד מהאחראים במיקרוסופט על מחלקה זה שצריך דחוף לקבל תעודת פיטורין.
(נס שאני לא עובד שם, אחרת הייתי ממזמן מפוטר)פורסם במקור בפורום CODE613 ב06/02/2014 23:41 (+02:00)