Ange höjden av ListboxItems i en ListBox programmässigt för Windows Store App

Jag arbetar på en windows store ansökan och en av de saker jag vill göra i app är att visa en logg som visar statusmeddelanden och andra informativa godbitar som användaren arbetar saker. I detta syfte, Jag la en listruta som följer:

<ListBox x:Namn ="GameStateLog" HorizontalAlignment ="Center" Höjd ="221" VerticalAlignment ="Topp" Bredd ="499" Padding ="0" FontSize ="10">

 

C#-koden att fylla i listrutan vid körning var i linje med:

GameStateLog.Items.Insert(0, GameStateCounter    + ": Nya spelet staten: väntar på spelaren 1 Namn");

Detta fungerade bra nog men UI visade en galen mängd stoppning runt de enskilda meddelandena som de lades. Det är vettigt om jag vill att användare ska kunna markera dessa objekt men inte meningsfullt när jag vill bara visa en rinnande serie med logga meddelanden-användare kommer inte att välja detta, bara visa dem. Det var märkligt svårt att hitta ett enkelt sätt att göra detta och utan tvekan, Hur jag hittade det är inte nödvändigtvis "lätt" men jag fik den arbetande OK. Den viktigaste insikten kom från detta inlägg Här (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) från Bob Relyea. Istället för att lägga strängar objektmängden på ListBox, Lägg till ListBoxItems. Genom att lägga till en sträng, ListBox var att skapa en egen ListBoxItem på egen hand. Jag var inte kunna påverka något om att ListBoxItem i efterhand. Den nya koden är:

        privat void AddGameStateLogMessage(sträng theMessage)
        {
            ListBoxItem li = nya ListBoxItem();
            Li.Content = theMessage;
            Li.MaxHeight = 25;

            Tjocklek thisPadding = nya Tjocklek(5, 0, 5, 0);
            Li.Padding = thisPadding;

            GameStateLog.Items.Insert(0,Li);
        }

 

Här jag skapar Listboxitems och infoga dem. Jag tog bort överflödigt stoppning genom att ange dess tjocklek.

Detta är ganska flexibelt som jag avser att göra några färgkodning för att markera särskilda typer av meddelanden och genom att direkt lägga till ListBoxItems jag får stil dem som jag vill.

Hoppas detta hjälper någon!

</slutet>

undefinedPrenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Lämna svar

Din e-postadress kommer inte att publiceras. behövliga fält är markerade *