Jeg arbejder på en Vinduer store programmet og en af de ting, jeg ønsker at gøre i app er vist en log, der viser status beskeder og andre informative lækkerier som brugeren arbejder ting. Til dette formål, Jeg har tilføjet en liste som følger:
<ListBox x:Navn ="GameStateLog" HorizontalAlignment ="Center" Højde ="221" VerticalAlignment ="Toppen" Bredde ="499" Polstring ="0" Skriftstørrelse (FontSize) ="10">
C#-kode til at udfylde kontrolelementerne liste på runtime blev i lighed med:
GameStateLog.Items.Insert(0, GameStateCounter + ": Nye spil tilstand: venter på afspilleren 1 Navn");
Det virkede fint nok men UI viste et vanvittigt beløb af polstring omkring de enkelte meddelelser, som de blev tilføjet. Det giver mening, hvis jeg ønsker slutbrugere at vælge disse emner, men ikke giver mening, når jeg ønsker blot at vise en løbende serie af logmeddelelser-brugere vil ikke vælge disse, bare se dem. Det var mærkeligt nok svært at finde en nem måde at gøre dette og velsagtens, den måde, jeg fandt det ikke nødvendigvis "let", men jeg fik det til at virke OK. Den afgørende indsigt kom fra denne udstationering Her (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) fra Bob Relyea. I stedet for at tilføje strenge til samlingen elementer på en liste, Tilføj ListBoxItems. Ved at tilføje en streng, ListBox var at skabe sin egen ListBoxItem på sin egen. Jeg var ikke i stand til at påvirke noget om at ListBoxItem efter faktum. Den nye kode er:
privat void AddGameStateLogMessage(streng theMessage) { ListBoxItem li = nye ListBoxItem(); Li.Indhold = theMessage; Li.MaxHeight = 25; Tykkelse thisPadding = nye Tykkelse(5, 0, 5, 0); Li.Polstring = thisPadding; GameStateLog.Items.Insert(0,Li); }
Her jeg opretter Listboxitems og indsætte dem. Jeg fjernet den overskydende polstring ved at angive dens tykkelse.
Dette er temmelig fleksible som jeg agter at gøre nogle farvekodning for at fremhæve bestemte typer af beskeder og ved direkte at ListBoxItems får jeg at style dem jeg vil.
Håb indeværende hjælper nogen!
</slutningen>
Følg mig på kvidre på http://www.twitter.com/pagalvin