Já jsem pracoval na aplikace windows store a je jedna z věcí, které chci udělat v aplikaci zobrazit protokol, který zobrazuje stavové zprávy a další informační tidbits, jak uživatel pracuje věci. Za tímto účelem, Přidala jsem takto ListBox:
<ListBox x:Jméno ="GameStateLog" HorizontalAlignment ="Centrum" Výška ="221" VerticalAlignment ="Nahoru" Šířka ="499" Padding ="0" Velikost písma ="10">
Kód jazyka C# k naplnění seznamu za běhu byl po vzoru:
GameStateLog.Items.Insert(0, GameStateCounter + ": Nová hra stát: čeká na hráče 1 Jméno");
To dopadlo dobře dost ale UI ukázala šílené množství výplně kolem jednotlivých zpráv, jak byly přidány. To dává smysl, je-li, aby koncoví uživatelé mohli vybrat tyto položky, ale nemá smysl, když chci jen Ukázat běžící sérii zpráv protokolu – uživatelé nebudou vybírat tyto, pouze zobrazit. Bylo to kupodivu těžké najít jednoduchý způsob, jak to udělat a pravděpodobně, způsob, jak jsem zjistil, že není nutně "snadné", ale mám to funguje OK. Klíčovým postřehem přišla od tohoto účtování Tady (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) od Bob Relyea. Namísto přidávání řetězců do kolekce položek v seznamu, Přidat ListBoxItems. Přidáním řetězce, ListBox vytvářel vlastní ListBoxItem o sobě. Nebyl jsem schopen ovlivnit nic o tomto ListBoxItem po faktu. Nový kód je:
soukromé void AddGameStateLogMessage(řetězec theMessage) { ListBoxItem li = nové ListBoxItem(); li.Obsah = theMessage; li.MaxHeight = 25; Tloušťka thisPadding = nové Tloušťka(5, 0, 5, 0); li.Padding = thisPadding; GameStateLog.Items.Insert(0,li); }
Zde vytvářím si ListBoxItem a jejich vkládání. Jsem odstranil přebytečný odsazení nastavením jeho tloušťka.
To je velmi flexibilní, jak hodlám udělat nějaké barevné kódování pro zvýraznění určité typy zpráv a přidáním přímo ListBoxItems mám styl je požadovaným způsobem.
Doufám, že to pomůže někdo!
</Konec>
Za mnou na Twitter na http://www.twitter.com/pagalvin