. אני עובד על יישום חנות windows וזה אחד הדברים שאני רוצה לעשות ב- app להציג יומן מציגה הודעות מצב, tidbits מידע אחרים כמו המשתמש עובד דברים. למטרה זו, הוספתי רשימה כדלקמן:
<הרשימה x:שם ="GameStateLog" HorizontalAlignment ="מרכז" גובה ="221" VerticalAlignment ="העליון" רוחב ="499" ריפוד ="0" גודל ="10">
קוד C# לאכלוס הרשימה בזמן ריצה הייתה בכיוון של:
GameStateLog.Items.Insert(0, GameStateCounter + ": מצב משחק חדש: מחכה לשחקן 1 שם");
זה עבד בסדר מספיק אבל ממשק המשתמש הראו בכמות מטורפת של ריפוד מסביב הודעות בודדות בעת הוספתם. זה הגיוני אם אני רוצה משתמשי קצה היכולת לבחור פריטים אלה, אבל זה לא יהיה הגיוני. אני רק רוצה להראות סדרת הודעות יומן הריצה – משתמשים לא לבחור את אלה, רק להציגם. . זה היה מוזר שקשה למצוא דרך קלה לעשות את זה, וללא ספק., הדרך מצאתי את זה לא בהכרח "קל" אבל לי זה עובד בסדר. התובנה מפתח בא פרסום זה כאן (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) של בוב Relyea. במקום להוסיף מחרוזות לאוסף הפריטים על הרשימה, הוספת ListBoxItems. על-ידי הוספת מחרוזת, תיבת הרשימה הייתה יצירת משלו ListBoxItem בכוחות עצמו. לא הייתי מסוגל להשפיע על משהו על זה ListBoxItem לאחר מעשה. הקוד החדש הוא:
פרטי void AddGameStateLogMessage(מחרוזת הודעה משפיעות) { ListBoxItem li = חדש ListBoxItem(); li.תוכן = הודעה משפיעות; li.MaxHeight = 25; עובי thisPadding = חדש עובי(5, 0, 5, 0); li.ריפוד = thisPadding; GameStateLog.Items.Insert(0,li); }
כאן אני יוצר של ListBoxItem והכנסת אותם. הסרתי את הריפוד עודף על-ידי הגדרת את עוביו.
. זה די גמיש כמו שאני מתכוון לעשות קצת צבע קידוד כדי לסמן סוגים מסוימים של הודעות על-ידי הוספת ישירות ListBoxItems אני מקבל סגנון אותם בכל דרך שארצה.
מקווה שזה עוזר למישהו!
</קצה>
עקוב אחרי הטוויטר ב http://www.twitter.com/pagalvin