עבור לתוכן

C# - עזרה | binding ב- wpf

Featured Replies

פורסם

שלום

התחלתי ללמוד wpf ויש לי בעיה ב-binding של TEXTBOX ל-PROPERTY מסויים.

אז ככה, באופן כללי אני בונה משחק שש בש. הלוגיקה פחות או יותר גמורה, עכשיו נשאר לשלב אותה עם ה-GUI :) .

על המסך שמתי TEXTBOX שמטרתו להציג את מספר הלבנים (נניח של הצבע הלבן) שנמצאים "בכלא", או במילים אחרות נאכלו.

כמובן שיש לי PROPERTY שמחזיר את ה- int הרלוונטי, אבל הוא נמצא בתוך היררכיה של מחלקות ולכן אני לא יודע איך לפנות אליו בעזרת ה- wpf ולהציג אותו ב-TEXTBOX.

מקווה שהבנתם, תודה מראש לעוזרים.

הסבר קצר של ההיררכיה:

פרויקט BL (שמופרד מפרויקט ה- GUI) ---> מחלקה ראשית LogicGame---> המחלקה LogicGame מכילה בתוכה אובייקט מסוג Player ---> המחלקה Player מכילה בתוכה אובייקט מסוג Jail (ה"כלא") ---> המחלקה Jail מכילה בתוכה את הפרופרטי BricksCount.

ככה שאם רוצים לגשת לפרופרטי באופן רגיל אז עושים זאת בצורה הבאה:

BL.LogicGame lg = new BL.LogicGame();

int res = lg.playerOne.jail.BricksCount;

פורסם
  • מחבר

אני צריך עזרה במשהו ספציפי ב- wpf, את שאר הדברים אני אלמד כבר עם הזמן תוך כדי.. אבל תודה בכל מקרה :) .

עוד מישהו יכול לעזור?

פורסם

אם למשל ה- DataContext של ה- View שלך הוא LogicGame אז אתה יכול פשוט לעשות את זה

<TextBlock Text="{Binding Player.Jail.BricksCount}"/>

כמובן ש- Bricks Count חייב לעבוד עם INotifyPropertyChanged כדי שה- UI שלך יקבל עדכונים בכל פעם שהערך משתנה.

אם אתה לא מכיר את הדברים האלה, אני ממליץ בחום לקרוא לפחות על הנושא של DataContext ו- DependencyProperties/INotifyPropertyChanged לפני שאתה ממשיך.

פורסם
  • מחבר

ש לי שלוש שאלות:

1. אתה מתכוון ל- textBoxName.DataContext?

2. למה TEXTBLOCK ולא TEXTBOX בקוד של הWPF?

3. אם ה-BricksCount לא עובד כרגע עם

INotifyPropertyChanged אז זה לפחות אמור להציג את הערך ההתחלתי שהוא 0?

ותודה על העזרה אני אקרא את שאר הדברים.

פורסם

1. אני מתכוון לכך שלפחות אחד מהאבות של ה- TextBlock שלך יהיה מקושר ב- DataContext לאובייקט המידע שלך.

2. TextBlock הוא פקד שרק מציג מחרוזות, ולא מאפשר לערוך אותן, TextBox הוא פקד שמאפשר גם עריכה. אם אין לך צורך בעריכה, עדיף להשתמש ב- TextBlock.

3. כן.

אגב, אני ממליץ לך להשתמש בכלי בשם Snoop כדי לחקור את האפליקציה שלך בזמן ריצה ולראות עם ה- Binding עובד או לא.

אם זה לא עובד הוא גם יכול להגיד לך למה.

פורסם
  • מחבר

תודה! ה- snoop עזר לי למצוא את הבעיה - לא כל האובייקטים שמפנים בסופו של דבר ל- bricksCount הוגדרו כ- property.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים