Tag Archives: Windows-lager

Rask og enkel: Angi størrelsen på en elementer i en liste i en Windows-Store App

I en Windows Store App oppretter jeg, Jeg ønsker å vise brukeren ulike informasjonsmeldinger.  Jeg plukket en liste som verktøy for å vise det slik at de kan bla gjennom dem og alt det gode ting. 

Meldingene er informasjonsformål bare, så det er ikke nødvendig å gi all den ekstra mellomrom rundt dem siden brukeren aldri kan velge dem for noe.  Standardvirkemåte for liste gir en betydelig mengde polstring og jeg ønsket å bli kvitt den.  Vel.... Du kan ikke gjøre den slags ting på listen direkte.  MEN, Du kan gjøre det for elementer du legger til:

        privat ugyldige AddGameStateLogMessage(streng theMessage)
        {
            Lærebok t = nye Tekstboks();
            t.Text = GameStateCounter    + ": " + theMessage;
            t.TextWrapping = TextWrapping.Wrap;
            t.MinWidth = 400;
            Tykkelse thisPadding = nye Tykkelsen(5, 0, 5, 0);
            t.Padding = thisPadding;
            t.FontSize = 12;

            ListBoxItem li = nye ListBoxItem();
            Li.Innhold = t;
            Li.MaxHeight = 25;
            thisPadding = nye Tykkelsen(5, 0, 5, 0);
            Li.Utfylling = thisPadding;

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

i ovennevnte, Jeg opprette en tekstboks og angi skrifttype, dens utfylling, osv..

Neste, Jeg opprette en ListBoxItem og sette innholdet til formatert tekstboksen.

Endelig, Jeg inn i ListBoxItem i listen.  (Jeg vil vise de siste meldingene kommer øverst i listen, Derfor sette(0,Li) i stedet for et enkelt legge til() anrop.).

Jeg vil bli tweaking dette litt før jeg er veldig fornøyd med ListBox virkemåten men mønsteret ovenfor har vært svært fruktbart.  Forhåpentligvis finner noen andre det nyttig.

</slutten>

undefinedAbonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Angi høyden på ListboxItems i en liste programmatisk for Windows forretning App

Jeg jobber med en windows-butikk-program og en av tingene jeg ønsker å gjøre i programmet er å vise en logg som viser statusmeldinger og andre informativ ting som brukeren arbeider ting. Dette, Jeg har lagt en liste som følger:

<ListBox x:Navnet ="GameStateLog" HorizontalAlignment ="Center" Høyde ="221" VerticalAlignment ="Toppen" Bredde ="499" Polstring ="0" FontSize ="10">

 

C#-kode til å fylle ut liste under kjøring var langs linjene av:

GameStateLog.Items.Insert(0, GameStateCounter    + ": Nye spillet staten: venter på spilleren 1 navn");

Dette virket helt fint nok men UI viste en gal mengde utfylling rundt den enkelte meldinger som de ble lagt til. Det er fornuftig hvis jeg sluttbrukerne skal kunne velge men ikke gir mening når jeg vil bare vise en løpende serie med loggmeldingene-brukere vil merke dette, bare se dem. Det var merkelig vanskelig å finne en enkel måte å gjøre dette og kanskje, måten jeg fant det er ikke nødvendigvis "lett", men jeg fikk den arbeider OK. Viktig innsikt kom fra dette oppslaget her (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) fra Bob Relyea. I stedet for strenger å elementsamlingen på liste, legge til ListBoxItems. Ved å legge til en streng, Listen var å skape sin egen ListBoxItem på egen hånd. Jeg var ikke i stand til å påvirke noe om at ListBoxItem i ettertid. Den nye koden er:

        privat ugyldige AddGameStateLogMessage(streng theMessage)
        {
            ListBoxItem li = nye ListBoxItem();
            Li.Innhold = theMessage;
            Li.MaxHeight = 25;

            Tykkelse thisPadding = nye Tykkelsen(5, 0, 5, 0);
            Li.Utfylling = thisPadding;

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

 

Her jeg oppretter Listboxitems og sette dem. Jeg fjernet overflødig utfyllingen ved å angi tykkelse.

Dette er ganske fleksibel som jeg har tenkt å gjøre noen fargekoding for å utheve bestemte typer meldinger og direkte legge ListBoxItems jeg kommer til stil dem slik jeg ønsker.

Håpe dette hjelper noen!

</slutten>

undefinedAbonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin