WPF למה מאפיין לא יכול לקבל פקד קיים ?
-
ב WIN FORMS יכולתי להעביר פקד קיים למאפיין של פקד אחר, למשל:
אם יש לי כמה imageList אני יכול לבחור אחד מהן שאותו אשים במאפיין imageList של טאב-קונטרול.
בWPF כאשר אני מנסה לעשות דבר כזה הוא יוצר לי פקד חדש ולא מציג ברשימה בכלל את הפקדים הקיימים המתאימים למאפיין.מדוע?
תודה לכולם.
פורסם במקור בפורום CODE613 ב29/01/2014 17:54 (+02:00)
-
ImageList זה לא פקד. זה כמו Timer, זה קומפוננטה (=רכיב), מין קלאס שיכול להיות גם בזמן עיצוב.
לא זוכר מה הImageList עושה וממילא לא יודע להגיד לך איך עושים בWPF.
אם תגיד בדיוק מה אתה רוצה לעשות בWPF, אולי אדע איך לעשות.עריכה:
מדפדוף קצר באינטרנט אני רואה שזו דרך להקצות לפקדים רבים תמונות לפי אינדקס כאשר כולם חולקים את אותה רשימה.
בעצם היתרונות של זה זה ריכוזיות, וחיסכון בכפילויות.
אפשר ליישם את זה בWPF אבל הייתי שמח שתרחיב מה הצורך המדוייק.פורסם במקור בפורום CODE613 ב29/01/2014 18:20 (+02:00)
-
אני רוצה לעשות סרגל ניווט + חיפוש שינווט ויחפש ברשומות שמוצגות בדטה גריד,
לצורך זה יצרתי יוזר-קונטרול שיהיה סרגל ועשיתי מאפיין 'טבלת יעד' בסרגל הניווט, אבל כאשר באתי להגדיר לסרגל שטבלת יעד שלו יהיה דטה גריד קיים לא היה ברשימה רק אפשרות של יצירת דטה גריד חדש.
עשיתי אותו דבר בדיוק ב WIN FORMS וזה עובד.פורסם במקור בפורום CODE613 ב29/01/2014 18:30 (+02:00)
-
דבר ראשון יש לך צורך בסרגל ניווט ואתה מנסה לעשות זאת בWPF. לא לגמרי הבנתי מה הכוונה בסרגל ניווט.
דבר שני עשית קוד וזה לא עבד וזה בעיה נוספת. לשם פיתרון שלה, מוכרחים לראות את הקוד לבעיה זו (מאפיין יעד? סוג מה מי, ואז מה קורה?).
והבעיה השלישית, שצורת עבודה זהה לקוד זה עובד בWinForms כלומר גם אם נפתור את שתי הבעיות הקודמות, תישאר שאלה למה זה שונה.ובכן לאיזה שאלה הכי חשוב לך שאתייחס כעת?
בשביל שאלה א' אני צריך הרחבה של מה את רוצה שיהיה ובשביל שתי השאלות האחרות אני צריך קוד WPF, בשביל השלישית אני צריך קוד WinForms.
ואנא בחר שאלה אחת בלבד, אחרי שנגמור איתה נעבור לאחרת.פורסם במקור בפורום CODE613 ב29/01/2014 19:00 (+02:00)
-
הסרגל ניווט זה דבר פשוט מאוד, זה יוזר-קונטרול שמכיל שני קומבו, הראשון מציג רשימת עמודות מטבלת היעד והשני מציג רשימה של שדות על פי שם העמודה שבקומבו הראשון
כאשר המשתמש בוחר שדה מתוך הקומבו השני - בטבלת היעד נבחרת הרשומה שמכילה את השדה.כדי הסרגל ידע באיזה דטה גריד מדובר יש את המאפיין הבא:
Private _TargetDataGrid As DataGrid Public Property TargetDataGrid As DataGrid Get Return _TargetDataGrid End Get Set(value As DataGrid) _TargetDataGrid = value '..... End Set End Property
אבל כאשר אני בא להגדיר את המאפיין הנ''ל שיפנה לדטה גריד שקיים בטופס זה לא אפשרי.
יש לי רעיונות איך לעשות את זה אחרת בלא להזדקק למאפיין הזה אבל השאלה למה ב WPF זה לא עובד ובדיוק אותו דבר ב WIN FORMS כן עובד.פורסם במקור בפורום CODE613 ב29/01/2014 19:14 (+02:00)
-
חבל שבחרת לסתום ולא לענות בפירוש מה אתה רוצה באשכול זה מבין האפשרויות שנשאלת.
אני עונה בהנחה שבחרת את האפשרות השנייה: למה הקוד שכתבת לא עובד.אבל כאשר אני בא להגדיר את המאפיין הנ''ל שיפנה לדטה גריד שקיים בטופס זה לא אפשרי.
איפה אתה "בא להגדיר" ומה הכוונה "לא אפשרי" המסך מתפוצץ?
פורסם במקור בפורום CODE613 ב29/01/2014 19:34 (+02:00)
-
בקוד לא ניסית להגדיר את המאפיין של טבלת היעד אלא בחלונית המאפיינים של הסרגל, כאשר אני בא להגדיר את המאפיין הזה נפתח קומבו עם שורה אחת שאם בוחרים אותה נוצר דטה גריד חדש ואין בקומבו הזה את הדטה גריד שכבר קיים בטופס,
לאומת זאת בWIN FORMS בקומבו הנ''ל יש את כל הדטה גרידים שיש בטופס.פורסם במקור בפורום CODE613 ב29/01/2014 20:15 (+02:00)
-
נראה לי שאם הוא עושה.
Wpf.TargetDataGrid = MyDataGrid;
והVS אומר לו שזה תחביר שגוי.
אז זהו שלא...
בקוד לא ניסית להגדיר את המאפיין של טבלת היעד אלא בחלונית המאפיינים של הסרגל, כאשר אני בא להגדיר את המאפיין הזה נפתח קומבו עם שורה אחת שאם בוחרים אותה נוצר דטה גריד חדש ואין בקומבו הזה את הדטה גריד שכבר קיים בטופס,
לאומת זאת בWIN FORMS בקומבו הנ''ל יש את כל הדטה גרידים שיש בטופס."לא בקוד, אלא בחלון המאפיינים" = לא בקוד אלא בXAML.
אם תחשוב תבין למה אי אפשר. XAML הוא לא קוד רקע, אלא צורה הצהרתית ליצירת אובייקטים בלבד!
בXAML אפשר להעביר מידע או בצורת סטרינג, או בצורת Markup Extension שזה הסוגריים המסולסלות, בהם יש כמה דרכים נוספים לתת מידע (אפשר ליצור כאלה נוספים).
אז איך אתה רוצה לתת את הגריד הפציפי בתור מאפיין? אם כסטרינג של שמו, בשמחה, אבל אתה חייב לטפל במחלקה שלך בתרחיש של בנאי סטרינג ולא פקד גריד.
ואם כבינדינג לאלמנט אתה אכן יכול רק שמאפיין רגיל לא תומך בבינדינג כך שתצטרך לכתוב Dependency Property.פורסם במקור בפורום CODE613 ב30/01/2014 12:21 (+02:00)
-
אצטרף להמיר את המאפיין למאפיין תלות.
כדאי לך לחשוב שוב לפני שאתה עושה זאת.
אתה רוצה קישור בזמן עיצוב בין קומבובוקס לרשימת עמודות.
אפשרות ראשונה: רשימת העמודות הרי לא נוצרה מאיליהם, יש להם מקור, אולי תוכל לחלוק את אותו המקור עם שניהם?
אפשרות שניה: אם זה דפוס פעולה אוטומטי, שהיוזר קונטרול מתממשק לכל רשימת הטבלאות והעמודות, תוכל לעשות מאפיין בודד של רשימת טבלאות במערך, והקומבו הראשון יפנה למיקום וממנו הID השני ייקח. את רשימת הטבלאות תוכל לקחת בקוד ע"י חיפוש בParent בו הוא נמצא אחרי כל הDataGrid (אפשרות גרועה מבחינתי), או שוב ישירות למקור המידע של הדטה גרידים.הצלחה.
פורסם במקור בפורום CODE613 ב30/01/2014 13:26 (+02:00)
-
העינין של כל הדטה-גרידים צריכים את הסרגל הזה, המקור של כל הטבלאות זה הדטה-סט שמחובר ל SQL SERVER
חשבתי גם על רעיון אחר והוא:
כיון שהדטה-גרידים שלי הם בעצם מחלקה חדשה שיורשת מדטה-גריד של WPF אפשר שהדטה גריד יצור עבור עצמו סרגל וכבר יעביר לו בפרמטר את מערך העמודות וכל מה שצריך.פורסם במקור בפורום CODE613 ב30/01/2014 13:33 (+02:00)