WPF לחצן שונה בראש שורה האחרונה בדטה-גריד
-
העיקר זה לפתור את הבעיה, אבל אני גם שואל למה שם הארוע לא גורם ללחצן שבראש השורה לשנות את הטקסט שלו.
@דוד ל.ט.אגב אני תמה למה במקומו הוא (בפרטי איש קשר) הוא השתנה אחרי שהוספת.
הארוע RowHeadBtn_Loaded מטפל בטעינה של הלחצן שבראש השורה ולא בטעינת ה RowDetails ולכן כל פעם שאני מוסיף שורה חדשה ויש צורך ביצירת לחצן חדש עבור ראש השורה החדשה הארוע הזה קופץ, אבל משום מה בגליון הראשי של ההזמנות זה לא עובד.
פורסם במקור בפורום CODE613 ב26/12/2013 19:54 (+02:00)
-
העיקר זה לפתור את הבעיה, אבל אני גם שואל למה שם הארוע לא גורם ללחצן שבראש השורה לשנות את הטקסט שלו.
@דוד ל.ט.
אגב אני תמה למה במקומו הוא (בפרטי איש קשר) הוא השתנה אחרי שהוספת.הארוע RowHeadBtn_Loaded מטפל בטעינה של הלחצן שבראש השורה ולא בטעינת ה RowDetails ולכן כל פעם שאני מוסיף שורה חדשה ויש צורך ביצירת לחצן חדש עבור ראש השורה החדשה הארוע הזה קופץ, אבל משום מה בגליון הראשי של ההזמנות זה לא עובד.
האירוע הזה קופץ כשהכפתור נוצר. זהו.
אתה יכול להסביר לי למה הוא נוצר אחרי שאתה ממלא שורה חדשה? הוא כבר היה שם לפני כן!
רק השורה הנוספת שנוצרת אח"כ מקפיצה אירוע לכפתורה המשוייך לה.פורסם במקור בפורום CODE613 ב26/12/2013 20:06 (+02:00)
-
אני חושב שכאשר אתה ממלא שורה חדשה אז השורה עם הכפתור עם הכוכבית קופץ קדימה, ואתה למעשה ממלא שורה שנוצרה באותו רגע, זה נדמה כאילו אתה מלאת את השורה האחרונה אבל למעשה השורה האחרונה קפצה לסוף ואתה מלאת שורה שנוצרה ברגע זה ממש ולכן גם הלחצן שלה יש לו '+' ולא כוכבית.
אין איזה טריגר לזה
פורסם במקור בפורום CODE613 ב26/12/2013 20:49 (+02:00)
-
אני חושב שכאשר אתה ממלא שורה חדשה אז השורה עם הכפתור עם הכוכבית קופץ קדימה, ואתה למעשה ממלא שורה שנוצרה באותו רגע, זה נדמה כאילו אתה מלאת את השורה האחרונה אבל למעשה השורה האחרונה קפצה לסוף ואתה מלאת שורה שנוצרה ברגע זה ממש ולכן גם הלחצן שלה יש לו '+' ולא כוכבית.
אתה לא צריך כ"כ להתחבט בנושא, זה קל לבדיקה.
שים ברייקפוינט ותראה מה מקור השינוי.
אני בדקתי הרגע: שמתי באירוע טעינה שישנה את הכיתוב לזמן דקות+שניות. בגמר מילוי שורה הזמן לא שונה, אלא הזמן של השורה שנוצרה למטה. כך שממש פלא בעיני שהוא מתהפך לך ל+ בלי שאתה סוגר ופותח אותו.אין איזה טריגר לזה
למה טריגר, אתה הולך עם קוד. ואם טריגר, אז עד הסוף, לא חצי קוד וחצי טריגר.
כל עוד אינך עולה על הבעיה זה לא פלא שאין לך פיתרון. אחרי שנודע שאני צודק (אם כי לא מיושבת העובדה שזה עובד לך לחצאין) אז האירוע שלך צריך להיות שורה חדשה/מס' שורות השתנה וכדומה.פורסם במקור בפורום CODE613 ב26/12/2013 21:13 (+02:00)
-
@דוד ל.ט.
למה טריגר, אתה הולך עם קוד. ואם טריגר, אז עד הסוף, לא חצי קוד וחצי טריגר.
אפשר לכותב טריגר גם בתוך הקוד, שכל כל XAML אפשר לתרגם לקוד.
@דוד ל.ט.
שמתי באירוע טעינה שישנה את הכיתוב לזמן דקות+שניות.
שמת בטעינה של הלחצן? או בטעינה של ה RowDetails ?
פורסם במקור בפורום CODE613 ב26/12/2013 21:42 (+02:00)
-
@דוד ל.ט.
למה טריגר, אתה הולך עם קוד. ואם טריגר, אז עד הסוף, לא חצי קוד וחצי טריגר.אפשר לכותב טריגר גם בתוך הקוד, שכל כל XAML אפשר לתרגם לקוד.
מקוה שהבנת אותי אף על פי כן.
@דוד ל.ט.
שמתי באירוע טעינה שישנה את הכיתוב לזמן דקות+שניות.שמת בטעינה של הלחצן? או בטעינה של ה RowDetails ?
אכן בטעינת לחצן.
פורסם במקור בפורום CODE613 ב26/12/2013 22:09 (+02:00)
-
@דוד ל.ט.
אז האירוע שלך צריך להיות שורה חדשה/מס' שורות השתנה וכדומה.
איך נקרא ארוע כזה בדטה-גריד? מה שאני יודע על הוספת שורות זה ארוע CollectionChanged עבור ObservableCollection אבל ארוע זה קופץ מיד איך שהאוסף משתנה עוד לפני שהדטה-גריד מוסיף שורה.
פורסם במקור בפורום CODE613 ב27/12/2013 08:49 (+02:00)
-
אתה צודק.
אני חוזר בי ממה שכתבתי.
כעת בבדיקה שלי מתברר לי בדיוק כמו שכתבת: שאכן בעת כניסה לעריכת שורה חדשה נוצרת שורה של ממש והחדשה נעלמת עד סיום העריכה או הביטול.
אבל! רק השורה מתחדשת והויזואל נשאר אותם אלמנטים. ממילא צריך באירוע השורה ללכוד,
ולכן הקוד הזה עובד כן טוב:Private Sub dg_LoadingRow(sender As Object, e As DataGridRowEventArgs) If e.Row.Item.Equals(CollectionView.NewItemPlaceholder) Then e.Row.Header = "*" Else e.Row.Header = "+" End If End Sub
ממילא תעשה כך, רק במקום שינוי תוכן הכותרת הצב שם טמפלט מתאימה.
פורסם במקור בפורום CODE613 ב31/12/2013 21:10 (+02:00)