WPF datatemplate.ChildNames
-
בתוך ה QUICKWATCH אני רואה את ה datatemplate.ChildNames וגם את ChildTypeFromChildIndex אבל בתוך הקוד אין גישה למאפיינים אלו.
מדוע?
איך בכל זאת אפשר לגשת אליהם כמו שה QUICKWATCH הצליח לגשת לשם?
אני חייב לדעת אלו פקדים יש שם ומה הבינדינג שלהם.תודה לכולם.
פורסם במקור בפורום CODE613 ב20/01/2014 20:46 (+02:00)
-
ותכלס איך אם אני מקבל איזה טמפלט אני יכול לדעת מאיזה פקדים הוא מורכב ומה הבינדינג שלהם.
הבקשה לא הכי הגיונית, כי אתה יכול להסתכל בXAML.
אם מדובר בטמפלט לא שלך, בVS שלי הוא נותן הכל כשעושים Edit Style. אבל זה אכן לא קיים ב2010.
בכל אופן, נדמה לי שתוכל לעבור על עץ האלמנטים ע"י הפוקנציה "LoadContent". היא מחזירה לך אלמנט, אתה צריך לבדוק מהו, ואם יש לו בנים, וכן הלאה. לא הכי נחמד.פורסם במקור בפורום CODE613 ב21/01/2014 14:14 (+02:00)
-
@דוד ל.ט.
הבקשה לא הכי הגיונית, כי אתה יכול להסתכל בXAML.
מדובר במשהו גנארי שאמור לעבוד עם כל מיני דטה-טמפלטים.
@דוד ל.ט.
בכל אופן, נדמה לי שתוכל לעבור על עץ האלמנטים ע"י הפוקנציה "LoadContent". היא מחזירה לך אלמנט, אתה צריך לבדוק מהו, ואם יש לו בנים, וכן הלאה.
אתה בטח מתכוון למשהו כזה:
Private Function FindVisualChild(Of childItem As DependencyObject)(ByVal obj As DependencyObject) As childItem For i As Integer = 0 To VisualTreeHelper.GetChildrenCount(obj) - 1 Dim child As DependencyObject = VisualTreeHelper.GetChild(obj, i) If child IsNot Nothing AndAlso TypeOf child Is childItem Then Return CType(child, childItem) Else Dim childOfChild As childItem = FindVisualChild(Of childItem)(child) If childOfChild IsNot Nothing Then Return childOfChild End If End If Next i Return Nothing End Function
פורסם במקור בפורום CODE613 ב21/01/2014 14:20 (+02:00)
-
הקטע עם הגנריות כאן זה לא נראה לי תכנות נכון. כלומר ניתן להגיע לכל תוצאה מבוקשת בלי השמניות הללו.
והפוקנציה שהבאת קשורה אכן לדברי, אבל לא בדיוק.
היא מחזירה סוג מבוקש מתוך עץ אלמנטים, בעוד אתה רוצה הכל.
חוץ מזה היא מקבלת כפרמטר DependencyObject כשלך ביד יש רק DataTemplate לכן אמרתי שתיצור אובייקט ע"י המתודה LoadContent.פורסם במקור בפורום CODE613 ב21/01/2014 14:31 (+02:00)
-
הגנארי כאן זה מחלקה שיורשת מדטה גריד במחלקה זו כל העמדות מקבלות לחצן בחירה בראש העמודה לבחירת העמודה כולה כדי להעתיק ואז בארוע העתקה אני צריך לדעת על פי הדטה טמפלט של העמודה מה להעתיק וכמפורט באשכול סמוך.
טוב אני חושב שבזכותך הפתרון כמעט כבר כאן, לקחתי את טמפלט וקראתי ל LoadContent וקיבלתי סטאקפאנל ופשוט עברתי על כל הילדים שלו שמסוג טקסטבלוק. אבל אני רואה שאין שום טקסט בטקסטבלוקים האלו?
בטמפלט המקורי הטקסט לא מפורש אלא הוא בינדינג לאיזה מאפיין , כעת ניסיתי לדעת מה הבינדיג ואין לו זכר, גם ניסית לעשות שהדטה-קונטקס של הסטאקפאנל יהיה DATAROW מסויים עם מאפיינים זהים ועדיין אין שום טקסט בטקסטבלוקים.
מה עושים?איך אתה מציע לתכנן את זה נכון?
פורסם במקור בפורום CODE613 ב21/01/2014 14:59 (+02:00)
-
ברור שאתה חייב לתת לדטה קונטקסט של האלמנט (קראת לו סטאק פאנל, אבל זה רק במקרה, זה יכול להיות אלמנט אחר לחלוטין) את המידע הרלוונטי כעת.
ואם ככה אתה עושה זה נראה לי אמור לעבוד. לא יודע למה לא עובד לך.
בקשר לתכנון, אני מתנצל, אין לי רעיון יותר טוב. זה אכן הדרך לעשות.פורסם במקור בפורום CODE613 ב21/01/2014 18:57 (+02:00)