taggarkiv: Windows Store

Snabb och enkel: Ange storleken på ett objekt i en listruta i ett Windows Store App

I en Windows Store App skapar jag, Jag vill visa användaren olika informationsmeddelanden.  Jag plockade en listruta som verktyget att visa det så att de kan bläddra igenom dem och allt det bra grejer. 

Meddelanden är endast informativt, så det finns ingen anledning att ge allt det extra mellanslag runt dem eftersom användaren kan aldrig välja dem för något.  Standardbeteendet för ListBox ger en betydande mängd stoppning och jag ville bli av med den.  Tja.... Du kan inte göra sånt på listrutan direkt.  EMELLERTID, Du kan göra det till de poster som du lägger till:

        privat void AddGameStateLogMessage(sträng theMessage)
        {
            Textrutan t = nya Lärobok();
            t.Text = GameStateCounter    + ": " + theMessage;
            t.TextWrapping = TextWrapping.Wrap;
            t.MinWidth = 400;
            Tjocklek thisPadding = nya Tjocklek(5, 0, 5, 0);
            t.Padding = thisPadding;
            t.FontSize = 12;

            ListBoxItem li = nya ListBoxItem();
            Li.Content = t;
            Li.MaxHeight = 25;
            thisPadding = nya Tjocklek(5, 0, 5, 0);
            Li.Padding = thisPadding;

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

i ovanstående, Jag är att skapa en textruta och ställa in teckensnitt, dess stoppning, m.m..

Nästa, Jag skapa en ListBoxItem och sätta dess innehåll till textrutan formaterad.

Slutligen, Jag sätter på ListBoxItem i listrutan.  (Jag vill visa senaste meddelanden överst på listan, därav skäret(0,Li) i stället för en enkel Lägg till() åkallan.).

Jag kommer att pyssla här lite innan jag är riktigt nöjd med ListBox beteendet men mönstret ovan har varit mycket givande.  Förhoppningsvis finner någon annan det användbart.

</slutet>

undefinedPrenumerera på min blogg.

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

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