I’m working on a windows store application and one of the things I want to do in the app is display a log that shows status messages and other informational tidbits as the user works things. З гэтай мэтай, Я дадаў ListBox наступным:
<ListBox х:NAME ="GameStateLog" HorizontalAlignment ="Цэнтр" Вышыня ="221" VerticalAlignment ="Верхні" Шырыня ="499" Запаўненне ="0" FontSize ="10">
Код C # для запаўнення спісу падчас выканання было ўздоўж ліній:
GameStateLog.Items.Insert(0, GameStateCounter + ": Новае стан гульні: чакае гульцоў 1 імя");
This worked out fine enough but the UI showed a crazy amount of padding around the individual messages as they were added. Гэта мае сэнс, калі я хачу канчатковых карыстальнікаў, каб мець магчымасць выбраць гэтыя прадметы, але не мае сэнсу, калі я проста хачу паказаць якая працуе серыю часопісных паведамленняў - карыстальнікі не змогуць выбраць гэтыя, just view them. Гэта было дзіўна цяжка знайсці лёгкі спосаб зрабіць гэта і, магчыма,, the way I found it isn’t necessarily “easy” but I got it working OK. Ключавым момантам прыйшоў з дадзенага паведамлення тут (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) from Bob Relyea. Замест дадання радкоў у калекцыю элементы ў ListBox, add ListBoxItems. Пры даданні радкоў, the ListBox was creating its own ListBoxItem on its own. I wasn’t able to affect anything about that ListBoxItem after the fact. Новы код:
прыватны ануляваць AddGameStateLogMessage(радок theMessage) { ListBoxItem, што = новы ListBoxItem(); li.Content = theMessage; li.MaxHeight = 25; Таўшчыня thisPadding = новы Таўшчыня(5, 0, 5, 0); li.Padding = thisPadding; GameStateLog.Items.Insert(0,Li); }
Here I’m creating ListBoxItem’s and inserting them. Я зняў залішняе абіўка, усталяваўшы яго таўшчыня.
Гэта вельмі гнуткая, паколькі я маю намер зрабіць некаторыя колеру для абазначэння канкрэтных тыпаў паведамленняў і шляхам прамога дадання ListBoxItems я дабіраюся, каб стыль іх так, як я хачу.
Спадзяюся, што гэта дапамагае камусьці!
</канец>
Выконвайце за мной на Twitter у http://www.twitter.com/pagalvin